# Dominik KlumppUniversity of Freiburg | Albert-Ludwigs-Universität Freiburg · Department of Computer Science

Dominik Klumpp

Master of Science

## About

31

Publications

2,046

Reads

**How we measure 'reads'**

A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more

73

Citations

Introduction

**Skills and Expertise**

Additional affiliations

February 2019 - present

September 2016 - February 2018

Education

October 2016 - December 2018

**Universität Augsburg, Technische Universität München, Ludwig-Maximilians-Universität München**

Field of study

- Software Engineering

October 2013 - September 2016

## Publications

Publications (31)

We address the verification problem for concurrent program that dynamically create (fork) new threads or destroy (join) existing threads. We present a reduction to the verification problem for concurrent programs with a fixed number of threads. More precisely, we present petrification, a transformation from programs with dynamic thread management t...

The verification approach of Ultimate Automizer utilizes SMT formulas. This paper presents techniques to keep the size of the formulas small. We focus especially on a normal form, called CommuHash normal form that was easy to implement and had a significant impact on the runtime of our tool.

Ultimate Taipan integrates trace abstraction with algebraic program analysis on path programs. Taipan supports data race checking in concurrent programs through a reduction to reachability checking. Though the subsequent verification is not tuned for data race checking, the results are encouraging.

The importance of exploiting commutativity relations in verification algorithms for concurrent programs is well-known. They can help simplify the proof and improve the time and space efficiency. This paper studies commutativity relations as a first-class object in the setting of verification algorithms for concurrent programs. A first contribution...

Commutativity-based reasoning has significant benefits for algorithmic verification of concurrent programs: Verifying only a reduction, i.e., a representative subset of interleavings, can simplify proofs, and allow for compact program representations that enable efficient proof checking. Reductions are defined by two key parameters: the notion of c...

We present a systematic investigation and experimental evaluation of a large space of algorithms for the verification of concurrent programs. The algorithms are based on sequentialization. In the analysis of concurrent programs, the general idea of sequentialization is to select a subset of interleavings, represent this subset as a sequential progr...

Ultimate GemCutter verifies concurrent programs using the CEGAR paradigm, by generalizing from spurious counterexample traces to larger sets of correct traces. We integrate classical CEGAR generalization with orthogonal generalization across interleavings. Thereby, we are able to prove correctness of programs otherwise out-of-reach for interpolatio...

Ultimate GemCutter verifies concurrent programs using the CEGAR paradigm, by generalizing from spurious counterexample traces to larger sets of correct traces. We integrate classical CEGAR generalization with orthogonal generalization across interleavings. Thereby, we are able to prove correctness of programs otherwise out-of-reach for interpolatio...

Deductive program verification is a powerful tool to gain confidence in the correctness of software. However, its application to real programs faces a major hurdle: Each programming language requires development of dedicated verification tool support. In this work, we aim to advance deductive software verification to arbitrary programming languages...

Deductive program verification is a powerful tool to gain confidence in the correctness of software. However, its application to real programs faces a major hurdle: Each programming language requires development of dedicated verification tool support. In this work, we aim to advance deductive software verification to arbitrary programming languages...

Given a verification problem for a concurrent program (with a fixed number of threads) over infinite data domains, we can construct a model checking problem for an abstraction of the concurrent program through a Petri net (a problem which can be solved using McMillan’s unfoldings technique). We present a method of abstraction refinement which trans...

Given a verification problem for a concurrent program (with a fixed number of threads) over infinite data domains, we can construct a model checking problem for an abstraction of the concurrent program through a Petri net (a problem which can be solved using McMillan’s unfoldings technique). We present a method of abstraction refinement which trans...

It is well-known that concurrent programs suffer from the state explosion problem: Due to the non-deterministic scheduling of different threads, the number of reachable program states grows exponentially in the number of threads. Accordingly, the runtime of static analyses or verification algorithms also grows exponentially in the number of threads...

It is well-known that concurrent programs suffer from the state explosion problem: Due to the non-deterministic scheduling of different threads, the number of reachable program states grows exponentially in the number of threads. Accordingly, the runtime of static analyses or verification algorithms also grows exponentially in the number of threads...

Deductive program verification is a powerful tool to gain confidence in software. However, its application to real implementations faces a major hurdle: Each programming language requires development of a dedicated calculus and dedicated tool support. In this project, we aim to advance deductive software verification to arbitrary programming langua...

Many standard software analyses require the control flow graph (CFG) of the analysed software as input. This poses no problem for analyses based on the source code. Sometimes however, an analysis must be based on a compiled binary, if for instance the source code is unavailable or lacks necessary low-level information. Thus, a CFG has to be constru...

Verification mathematically proves software correctness and absence of bugs. Interactive Theorem Provers such as KIV support proofs and ensure their correctness. However: Verifier support for real-life programming languages is limited.
In our project, we translate human-readable language semantics to formal specifications, convert programs into fo...

As software permeates more and more aspects of daily life and becomes a central component of critical systems around the world,
software quality and effective methods to ensure it are paramount.
There is a huge variety of both static and dynamic analyses that aim to provide such guarantees.
Typically, such analyses are based on the analysed program...

By restructuring and reconfiguring itself at run-time, a collective adaptive system (CAS) is able to fulfill its requirements under uncertain, ever-changing environmental conditions. Indeed, this process of self-organization (SO) is of utmost importance for the ability of the CAS to perform. However, it is hard to design high-performing SO mechanis...

By restructuring and reconfiguring itself at run-time, a collective adaptive system (CAS) is able to fulfill its requirements under uncertain, ever-changing environmental conditions. Indeed, this process of self-organization (SO) is of utmost importance for the ability of the CAS to perform. However, it is hard to design high-performing SO mechanis...

A major challenge of testing self-organization mechanisms is to cover the large state space that is due to the autonomy of the system and the partially unpredictable environment it has to operate in. This challenges the test case generation and selection, since exhaustive testing is largely impossible and the adequacy of a test suite depends on run...

## Questions

Question (1)

Given a model consisting of a set of (first-order) formulas, certain dependencies arise between the free variables of these formulas. For instance, given the assumptions { x <= y }, a choice of value for x constrains the possible values of y. This extends to more complex terms and formulas, e.g. f(x) depending on (x < 0) in the model { f(x) = sgn(x) * x² }.

Are there any results on the nature of such dependencies in logic or any other field? Particularly regarding automatic detection of such dependencies?

I have found dependence/independence logic (logics of imperfect information), which extend first-order logic with formulas specifying such relations explicitly, but nothing on the implicit relationships established by regular first-order logic or on automatic analyses. I thought fields such as constraint solving or SMT might have investigated this topic, but have found nothing so far.