Mattias Ulbrich

dblp:73/9580 · DBLP profile ↗
← Back
43ranked-venue papers
1as first author
21since 2021 · last 2026
0000-0002-2350-1831ORCID · verified

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

Software engineering, systems software and programming languages · 34 · 1 first-author · 19 since 2021Theory of computation · 13 · 7 since 2021Systems, architecture and hardware · 5Artificial intelligence and machine learning · 1
YearPublicationVenuePosition
2026 A Framework for the Interoperable Specification and Verification of Encapsulated Data Structures
abstract
Abstract Well-designed data structures are fundamental to the construction of robust programs, particularly when their correctness can be established using formal methods. Currently, various successful deductive verification techniques exist but necessitate distinct and non-interoperable specifications and verification methods for data structure implementations. This paper presents a technique enabling cross-paradigm interoperable specification and verification of encapsulated data structures. The novel approach builds on the shared mathematical foundations of algebraic data types (ADTs) across these diverse methodologies. The technique enables the coherent integration of components that have been verified using different deductive program verification approaches within a single project, provided that a regime of encapsulation is followed, which is slightly stricter than those originally imposed by the verification techniques. We formally introduce and discuss the encapsulation principle using a simplified conceptual object-oriented language and subsequently instantiate it for the Java programming language. This integrates the approaches of KeY, VeriFast, and Universe Types, thereby enabling heterogeneous verification projects in Java that encompass Dynamic Frames, Separation Logic, and Ownership Types. We demonstrate the applicability of our approach by conducting a cooperative verification of a client with three different data structures, each of which is verified with one of the aforementioned techniques.
Wolfram Pfeifer, Werner Dietl, Mattias Ulbrich
FM (2)3
2026 Slicing Models for Equiconsistency with Alloy
Marc Thieme, Shobhit Singh, Terru Stübinger, Romain Pascual, Mattias Ulbrich
ABZ5
2026 Heterogeneous Dynamic Logic: Provability Modulo Program Theories
abstract
Formally specifying, let alone verifying, properties of systems involving multiple programming languages is inherently challenging. We introduce Heterogeneous Dynamic Logic (HDL), a framework for combining reasoning principles from distinct (dynamic) program logics in a modular and compositional way. HDL mirrors the architecture of satisfiability modulo theories (SMT): Individual dynamic logics, along with their calculi, are treated as dynamic theories that can be combined to reason about heterogeneous systems whose components are verified using different program logics. HDL provides two key operations: Lifting extends an individual dynamic theory with new program constructs (e.g., the havoc operation or regular programs) and automatically augments its calculus with sound reasoning principles for the new constructs; and Combination enables cross-language reasoning in a single modality via Heterogeneous Dynamic Theories , facilitating the reuse of existing proof infrastructure. By lifting combined theories with regular programs, we obtain heterogeneous control structures that allow us to reason about intertwined cross-language behavior. We formalize dynamic theories, their lifting and combination, and prove the soundness of all proof rules in Isabelle. We also introduce a proof rule combining deductive DL-based reasoning with reasoning principles from Kleene Algebras with Tests. Furthermore, we prove relative completeness theorems for lifting and combination: Under usual assumptions, reasoning about lifted or combined theories is no harder than reasoning about the constituent dynamic theories and their common first-order structure (i.e., the data theory). We demonstrate HDL's value by verifying an automotive case study where a Java controller (formalized in Java dynamic logic) steers a plant model (formalized in differential dynamic logic).
Samuel Teuber, Mattias Ulbrich, André Platzer, Bernhard Beckert
Proc. ACM Program. Lang.2
2025 Observable Semantics for Characterising Consistency Between Heterogeneous Models
Henriette Färber, Romain Pascual, Terru Stübinger, Mattias Ulbrich
SEFM4
2024 The Java Verification Tool KeY:A Tutorial
abstract
Abstract The KeY tool is a state-of-the-art deductive program verifier for the Java language. Its verification engine is based on a sequent calculus for dynamic logic, realizing forward symbolic execution of the target program, whereby all symbolic paths through a program are explored. Method contracts make verification scalable. KeY combines auto-active and fine-grained proof interaction, which is possible both at the level of the verification target and its specification, as well as at the level of proof rules and program logic. This makes KeY well-suited for teaching program verification, but also permits proof debugging at the source code level. The latter made it possible to verify some of the most complex Java code to date. The article provides a self-contained introduction to the working principles and the practical usage of KeY for anyone with basic knowledge in logic and formal methods.
Bernhard Beckert, Richard Bubel, Daniel Drodt, Reiner Hähnle, Florian Lanzinger, Wolfram Pfeifer, Mattias Ulbrich, Alexander Weigl
FM (2)7
2024 SpecifyThis Bridging Gaps Between Program Specification Paradigms: Track Introduction
Gidon Ernst, Paula Herber, Marieke Huisman, Mattias Ulbrich
ISoLA (3)4
2024 Contract-LIB: A Proposal for a Common Interchange Format for Software System Specification
Gidon Ernst, Wolfram Pfeifer, Mattias Ulbrich
ISoLA (3)3
2024 Formal Foundations of Consistency in Model-Driven Development
Romain Pascual, Bernhard Beckert, Mattias Ulbrich, Michael Kirsten, Wolfram Pfeifer
ISoLA (3)3
2024 Formally Verifying an Efficient Sorter
abstract
Abstract In this experience report, we present the complete formal verification of a Java implementation of inplace superscalar sample sort ( "Image missing") using the KeY program verification system. As "Image missing" is one of the fastest general purpose sorting algorithms, this is an important step towards a collection of basic toolbox components that are both provably correct and highly efficient. At the same time, it is an important case study of how careful, highly efficient implementations of complicated algorithms can be formally verified directly. We provide an analysis of which features of the KeY system and its verification calculus are instrumental in enabling algorithm verification without any compromise on algorithm efficiency.
Bernhard Beckert, Peter Sanders 0001, Mattias Ulbrich, Julian Wiesler, Sascha Witt
TACAS (1)3
2023 Scalable and Precise Refinement Types for Imperative Languages
Florian Lanzinger, Joshua Bachmeier, Mattias Ulbrich, Werner Dietl
iFM3
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.5
2023 Combining rule- and SMT-based reasoning for verifying floating-point Java programs in KeY
abstract
Abstract Deductive verification has been successful in verifying interesting properties of real-world programs. One notable gap is the limited support for floating-point reasoning. This is unfortunate, as floating-point arithmetic is particularly unintuitive to reason about due to rounding as well as the presence of the special values infinity and ‘Not a Number’ (NaN). In this article, we present the first floating-point support in a deductive verification tool for the Java programming language. Our support in the KeY verifier handles floating-point arithmetics, transcendental functions, and potentially rounding-type casts. We achieve this with a combination of delegation to external SMT solvers on the one hand, and KeY-internal, rule-based reasoning on the other hand, exploiting the complementary strengths of both worlds. We evaluate this integration on new benchmarks and show that this approach is powerful enough to prove the absence of floating-point special values—often a prerequisite for correct programs—as well as functional properties, for realistic benchmarks.
Rosa Abbasi Boroujeni, Jonas Schiffl, Eva Darulova, Mattias Ulbrich, Wolfgang Ahrendt
Int. J. Softw. Tools Technol. Transf.4
2022 Generalized Test Tables: A Domain-Specific Specification Language for Automated Production Systems
Bernhard Beckert, Mattias Ulbrich, Birgit Vogel-Heuser, Alexander Weigl
ICTAC2
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
IFM5
2022 SpecifyThis - Bridging Gaps Between Program Specification Paradigms
Wolfgang Ahrendt, Paula Herber, Marieke Huisman, Mattias Ulbrich
ISoLA (1)4
2022 Towards a Usable and Sustainable Deductive Verification Tool
Bernhard Beckert, Richard Bubel, Reiner Hähnle, Mattias Ulbrich
ISoLA (2)4
2022 A Refactoring for Data Minimisation Using Formal Verification
Florian Lanzinger, Mattias Ulbrich, Alexander Weigl
ISoLA (2)2
2022 Inferring Interval-Valued Floating-Point Preconditions
abstract
Abstract Aggregated roundoff errors caused by floating-point arithmetic can make numerical code highly unreliable. Verified postconditions for floating-point functions can guarantee the accuracy of their results under specific preconditions on the function inputs, but how to systematically find an adequate precondition for a desired error bound has not been explored so far. We present two novel techniques for automatically synthesizing preconditions for floating-point functions that guarantee that user-provided accuracy requirements are satisfied. Our evaluation on a standard benchmark set shows that our approaches are complementary and able to find accurate preconditions in reasonable time.
Jonas Krämer, Lionel Blatter, Eva Darulova, Mattias Ulbrich
TACAS (1)4
2021 Reconstructing z3 proofs in KeY: there and back again
abstract
One of the main factors of the increasing power of deductive verification tools are modern SMT solvers. Unfortunately, SMT solvers usually do not produce proof artifacts that could be inspected or checked. KeY is a formal platform for the deductive verification of Java programs which produces explicit, browsable proofs. SMT solvers can be driven from within KeY, but this unfortunately breaks these proof transparency intentions.
Wolfram Pfeifer, Jonas Schiffl, Mattias Ulbrich
FTfJP@ECOOP3
2021 Deductive Verification of Floating-Point Java Programs in KeY
abstract
Abstract Deductive verification has been successful in verifying interesting properties of real-world programs. One notable gap is the limited support for floating-point reasoning. This is unfortunate, as floating-point arithmetic is particularly unintuitive to reason about due to rounding as well as the presence of the special values infinity and ‘Not a Number’ (NaN). In this paper, we present the first floating-point support in a deductive verification tool for the Java programming language. Our support in the KeY verifier handles arithmetic via floating-point decision procedures inside SMT solvers and transcendental functions via axiomatization. We evaluate this integration on new benchmarks, and show that this approach is powerful enough to prove the absence of floating-point special values—often a prerequisite for further reasoning about numerical computations—as well as certain functional properties for realistic benchmarks.
Rosa Abbasi Boroujeni, Jonas Schiffl, Eva Darulova, Mattias Ulbrich, Wolfgang Ahrendt
TACAS (2)4
2021 Scalability and precision by combining expressive type systems and deductive verification
abstract
Type systems and modern type checkers can be used very successfully to obtain formal correctness guarantees with little specification overhead. However, type systems in practical scenarios have to trade precision for decidability and scalability. Tools for deductive verification, on the other hand, can prove general properties in more cases than a typical type checker can, but they do not scale well. We present a method to complement the scalability of expressive type systems with the precision of deductive program verification approaches. This is achieved by translating the type uses whose correctness the type checker cannot prove into assertions in a specification language, which can be dealt with by a deductive verification tool. Type uses whose correctness the type checker can prove are instead turned into assumptions to aid the verification tool in finding a proof.Our novel approach is introduced both conceptually for a simple imperative language, and practically by a concrete implementation for the Java programming language. The usefulness and power of our approach has been evaluated by discharging known false positives from a real-world program and by a small case study.
Florian Lanzinger, Alexander Weigl, Mattias Ulbrich, Werner Dietl
Proc. ACM Program. Lang.3
2020 Modular Verification of JML Contracts Using Bounded Model Checking
Bernhard Beckert, Michael Kirsten, Jonas Klamroth, Mattias Ulbrich
ISoLA (1)4
2020 Modular Regression Verification for Reactive Systems
Alexander Weigl, Mattias Ulbrich, Daniel Lentzsch
ISoLA (2)2
2019 On the Preservation of the Trust by Regression Verification of PLC software for Cyber-Physical Systems of Systems
abstract
Modern large scale technical systems often face iterative changes on their behaviours with the requirement of validated quality which is not easy to achieve completely with traditional testing. Regression verification is a powerful tool for the formal correctness analysis of software-driven systems. By proving that a new revision of the software behaves similarly as the original version of the software, some of the trust that the old software and system had earned during the validation processes or operation histories can be inherited to the new revision. This trust inheritance by the formal analysis relies on a number of implicit assumptions which are not self-evident but easy to miss, and may lead to a false sense of safety induced by a misunderstood regression verification processes. This paper aims at pointing out hidden, implicit assumptions of regression verification in the context of cyber-physical systems by making them explicit using practical examples. The explicit trust inheritance analysis would clarify for the engineers to understand the extent of the trust that regression verification provides and consequently facilitate them to utilize this formal technique for the system validation.
Suhyun Cha, Mattias Ulbrich, Alexander Weigl, Bernhard Beckert, Kathrin Land, Birgit Vogel-Heuser
INDIN2
2019 Using Relational Verification for Program Slicing
Bernhard Beckert, Thorsten Bormer, Stephan Gocht, Mihai Herda, Daniel Lentzsch, Mattias Ulbrich
SEFM6
2019 VerifyThis - Verification Competition with a Human Factor
abstract
VerifyThis is a series of competitions that aims to evaluate the current state of deductive tools to prove functional correctness of programs. Such proofs typically require human creativity, and hence it is not possible to measure the performance of tools independently of the skills of its user. Similarly, solutions can be judged by humans only. In this paper, we discuss the role of the human in the competition setup and explore possible future changes to the current format. Regarding the impact of VerifyThis on deductive verification research, a survey conducted among the previous participants shows that the event is a key enabler for gaining insight into other approaches, and that it fosters collaboration and exchange.
Gidon Ernst, Marieke Huisman, Wojciech Mostowski, Mattias Ulbrich
TACAS (3)4
2018 Towards a Notion of Coverage for Incomplete Program-Correctness Proofs
Bernhard Beckert, Mihai Herda, Stefan Kobischke, Mattias Ulbrich
ISoLA (2)4
2018 Automating regression verification of pointer programs by predicate abstraction
Vladimir Klebanov, Philipp Rümmer, Mattias Ulbrich
Formal Methods Syst. Des.3
2018 Relational Program Reasoning Using Compiler IR - Combining Static Verification and Dynamic Analysis
Moritz Kiefer, Vladimir Klebanov, Mattias Ulbrich
J. Autom. Reason.3
2017 SemSlice: Exploiting Relational Verification for Automatic Program Slicing
Bernhard Beckert, Thorsten Bormer, Stephan Gocht, Mihai Herda, Daniel Lentzsch, Mattias Ulbrich
IFM6
2017 Generalised Test Tables: A Practical Specification Language for Reactive Systems
Bernhard Beckert, Suhyun Cha, Mattias Ulbrich, Birgit Vogel-Heuser, Alexander Weigl
IFM3
2017 Generation of monitoring functions in production automation using test specifications
abstract
High requirements regarding quality are set for automated production systems (aPS) as malfunctions can harm humans or cause severe financial loss. These malfunctions can be caused by faults in the control software of the aPS or its inability to correctly identify and handle unintended situations and errors in the technical process or hardware behavior. To achieve more dependable control software, software testing and formal verification can be used to find faults in the software, but require to make assumptions about possible situations (inputs) occurring in the aPS during runtime and often only allow the validation of specific cases. Monitoring individual functions within the control software during runtime can help to identify unspecified situations and raise warnings of the uncertainty about the suitability of a reaction. Yet, the design of reliable monitoring functions requires extensive experience and resources. For this reason, we propose a method for generating monitoring functions from available testing and verification specifications initially used for validating a control software function. Through this, it is possible to continuously assess the behavior of individual software functions and to identify and warn about a) violations of the test specification during runtime and b) unintended situations in which correct software behavior was never tested. Thus, the approach can help to assess and improve both the control software and specification quality through observation and behavior assessment far beyond the testing phase by efficiently reusing existing test specifications for runtime monitoring.
Suhyun Cha, Sebastian Ulewicz, Birgit Vogel-Heuser, Alexander Weigl, Mattias Ulbrich, Bernhard Beckert
INDIN5
2017 Generalized test tables: A powerful and intuitive specification language for reactive systems
abstract
With recent trends in manufacturing automation, such as Industry 4.0, control software in automated production systems becomes more and more complex and volatile, complicating and increasing importance of quality assurance. Test tables are a widely used and generally accepted means to intuitively specify test cases for automation software. However, each table only specifies a single software trace, whereas the actual software behavior may cover multiple similar traces not covered by the table. Within this work, we present a generalization concept for test tables allowing for bounded and unbounded repetition of steps, “don't-care” values, as well as calculations with earlier observed values. We provide a verification mechanism for checking conformance of an IEC 61131-3 PLC software with a generalized test table, making use of a state-of-the-art model checker. Our notation is inspired by widely-used paradigms found in spreadsheet applications. By an empirical study with mechanical engineering students, we show that the notation matches user expectations. A real-world example extracted from an industrial automation plant illustrates our approach.
Alexander Weigl, Franziska Wiebe, Mattias Ulbrich, Sebastian Ulewicz, Suhyun Cha, Michael Kirsten, Bernhard Beckert, Birgit Vogel-Heuser
INDIN3
2015 Regression verification for Java using a secure information flow calculus
abstract
Regression verification and checking for illicit information flow in programs are probably the two most prominent instances of so-called relational program reasoning. Regression verification is concerned with proving that two programs behave either equally or differently in a formally specified manner; information-flow checking aims to establish that an attacker cannot distinguish executions of a program that vary in a part of the initial state designated as secret. While the theoretical connections between the two problems are well understood, there are also subtle but significant pragmatic differences. This paper reports the results of an experiment to adapt a state-of-the-art deductive information-flow verification system for Java to the problem of regression verification.
Bernhard Beckert, Vladimir Klebanov, Mattias Ulbrich
FTfJP@ECOOP3
2015 Proving equivalence between control software variants for Programmable Logic Controllers
abstract
Automated production systems are usually driven by Programmable Logic Controllers (PLCs). These systems are long-living and have high requirements for software quality to avoid downtimes, damaged product and harm to personnel. While commissioning multiple systems of similar type, pragmatic adjustments of the software are often necessary, which results in two or more similar variants of initially identical software. For further evolution of the software, an equivalence analysis of the software's behavior is beneficial to merge divergent development branches into a single program version. This paper presents a novel method for regression verification of PLC code, which allows one to prove that two variants of a plant's software behave identically in specified situations, despite being implemented differently. For this, a regression verification method for PLC code was designed, implemented and evaluated. The notion of program equivalence for reactive PLC code is clarified and defined. Core elements of the method are the translation of PLC code into the SMV input language for model checkers, the adaptation of the coupling invariants concept to reactive systems, and the implementation of a toolchain using a model checker. The approach was successfully evaluated using the Pick-and-Place Unit benchmark case study.
Sebastian Ulewicz, Birgit Vogel-Heuser, Mattias Ulbrich, Alexander Weigl, Bernhard Beckert
ETFA3
2015 Axiomatization of Typed First-Order Logic
Peter H. Schmitt, Mattias Ulbrich
FM2
2015 Regression Verification for Programmable Logic Controller Software
Bernhard Beckert, Mattias Ulbrich, Birgit Vogel-Heuser, Alexander Weigl
ICFEM2
2015 Selected challenges of software evolution for automated production systems
abstract
Automated machines and plants are operated for some decades and undergo an everlasting evolution during this time. In this paper, we present three related open evolution challenges focusing on software evolution in the domain of automated production systems, i.e. evolution and co-evolution of (interdisciplinary) engineering models and code, quality assurance as well as variant and version management during evolution.
Birgit Vogel-Heuser, Stefan Feldmann, Jens Folmer, Jan Ladiges, Alexander Fay, Sascha Lity, Matthias Tichy, Matthias Kowal, Ina Schaefer, Christopher Haubeck, Winfried Lamersdorf, Timo Kehrer, Sinem Getir, Mattias Ulbrich, Vladimir Klebanov, Bernhard Beckert
INDIN14
2015 Implementation-level verification of algorithms with KeY
Daniel Grahl, Wojciech Mostowski, Mattias Ulbrich
Int. J. Softw. Tools Technol. Transf.3
2014 Automating regression verification
abstract
Regression verification is an approach complementing regression testing with formal verification. The goal is to formally prove that two versions of a program behave either equally or differently in a precisely specified way. In this paper, we present a novel automatic approach for regression verification that reduces the equivalence of two related imperative integer programs to Horn constraints over uninterpreted predicates. Subsequently, state-of-the-art SMT solvers are used to solve the constraints. We have implemented the approach, and our experiments show non-trivial integer programs that can now be proved equivalent without further user input.
Dennis Felsing, Sarah Grebing, Vladimir Klebanov, Philipp Rümmer, Mattias Ulbrich
ASE5
2013 Information Flow in Object-Oriented Software
Bernhard Beckert, Daniel Grahl, Vladimir Klebanov, Christoph Scheben, Peter H. Schmitt, Mattias Ulbrich
LOPSTR6
2012 A Proof Assistant for Alloy Specifications
Mattias Ulbrich, Ulrich Geilmann, Aboubakr Achraf El Ghazi, Mana Taghdiri
TACAS1
2011 The 1st Verified Software Competition: Experience Report
Vladimir Klebanov, Peter Müller 0001, Natarajan Shankar, Gary T. Leavens, Valentin Wüstholz, Eyad Alkassar, Rob Arthan, Derek Bronish, Roderick Chapman, Ernie Cohen, Mark A. Hillebrand, Bart Jacobs 0002, K. Rustan M. Leino, Rosemary Monahan, Frank Piessens, Nadia Polikarpova, Tom Ridge, Jan Smans, Stephan Tobies, Thomas Tuerk, Mattias Ulbrich, Benjamin Weiß 0001
FM21