Matthias Heizmann’s research while affiliated with University of Freiburg and other places

What is this page?


This page lists works of an author who doesn't have a ResearchGate profile or hasn't added the works to their profile yet. It is automatically generated from public (personal) data to further our legitimate goal of comprehensive and accurate scientific recordkeeping. If you are this author and want this page removed, please let us know.

Publications (80)


Correctness Witnesses for Concurrent Programs: Bridging the Semantic Divide with Ghosts
  • Chapter

January 2025

·

4 Reads

Julian Erhard

·

Manuel Bentele

·

Matthias Heizmann

·

[...]

·

Vesal Vojdani

Correctness Witnesses with Function Contracts

January 2025

·

3 Reads

Software verification witnesses are a common exchange format for software verification tools. They were developed to provide arguments supporting the verification result, allowing other tools to reproduce the verification results. Correctness witnesses in the current format (version 2.0) allow only for the encoding of loop and location invariants using C expressions. This limits the correctness arguments that verifiers can express in the witness format. One particular limitation is the inability to express function contracts, which consist of a pre-condition and a post-condition for a function. We propose an extension to the existing witness format 2.0 to allow for the specification of function contracts. Our extension includes support for several features inspired by ACSL (\result, \old, \at). This allows for the export of more information from tools and for the exchange of information with tools that require function contracts.


Correctness Witnesses for Concurrent Programs: Bridging the Semantic Divide with Ghosts (Extended Version)

November 2024

·

3 Reads

·

1 Citation

Static analyzers are typically complex tools and thus prone to contain bugs themselves. To increase the trust in the verdict of such tools, witnesses encode key reasoning steps underlying the verdict in an exchangeable format, enabling independent validation of the reasoning by other tools. For the correctness of concurrent programs, no agreed-upon witness format exists -- in no small part due to the divide between the semantics considered by analyzers, ranging from interleaving to thread-modular approaches, making it challenging to exchange information. We propose a format that leverages the well-known notion of ghosts to embed the claims a tool makes about a program into a modified program with ghosts, such that the validity of a witness can be decided by analyzing this program. Thus, the validity of witnesses with respect to the interleaving and the thread-modular semantics coincides. Further, thread-modular invariants computed by an abstract interpreter can naturally be expressed in the new format using ghost statements. We evaluate the approach by generating such ghost witnesses for a subset of concurrent programs from the SV-COMP benchmark suite, and pass them to a model checker. It can confirm 75% of these witnesses -- indicating that ghost witnesses can bridge the semantic divide between interleaving and thread-modular approaches.


Ultimate GemCutter
  • Presentation
  • File available

April 2024

·

8 Reads

Download


Ultimate TestGen: Test-Case Generation with Automata-based Software Model Checking (Competition Contribution)

April 2024

·

16 Reads

·

1 Citation

Lecture Notes in Computer Science

We introduce Ultimate TestGen , a novel tool for automatic test-case generation. Like many other test-case generators, Ultimate TestGen builds on verification technology, i.e., it checks the (un)reachability of test goals and generates test cases from counterexamples. In contrast to existing tools, it applies trace abstraction, an automata-theoretic approach to software model checking, which is implemented in the successful verifier Ultimate Automizer . To avoid that the same test goal is reached again, Ultimate TestGen extends the automata-theoretic model checking approach with error automata.


Comparison on Termination-BitVectors
Ultimate Automizer and the Abstraction of Bitwise Operations: (Competition Contribution)

April 2024

·

23 Reads

·

5 Citations

Lecture Notes in Computer Science

The verification of Ultimate Automizer works on an SMT-LIB-based model of a C program. If we choose an SMT-LIB theory of (mathematical) integers, the translation is not precise, because we overapproximate bitwise operations. In this paper we present a translation for bitwise operations that improves the precision of this overapproximation.


Petrification: Software Model Checking for Programs with Dynamic Thread Management

December 2023

·

20 Reads

Lecture Notes in Computer Science

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 to an existing, Petri net-based formalism for programs with a fixed number of threads. Our approach is implemented in a software model checking tool for C programs that use the pthreads API.


Petrification: Software Model Checking for Programs with Dynamic Thread Management (Extended Version)

November 2023

·

33 Reads

·

1 Citation

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 to an existing, Petri net-based formalism for programs with a fixed number of threads. Our approach is implemented in a software model checking tool for C programs that use the pthreads API.



Citations (55)


... This supports our motivation for the clear separation of concerns. It [49] ✓ ✓ ✓ ✓ UTaipan [40] ✓ ✓ ✗ ✗ 2ls [56] ✓ ✗ ✗ ✓ PredatorHP [63] ✓ ✗ ✓ ✗ Symbiotic [53] ✓ ✓ ✓ ✓ Theta [11] ✓ ✗ ✗ ✗ EmergenTheta [10] ✓ ✗ ✗ ✗ CPV [36] ✓ ✗ ✗ ✗ suffices to improve the reachability analysis to perform well for multiple specifications. Last, RQ 4 evaluates, whether encoding the transformation directly into a C program loses performance when compared to the encoding of the transformation inside the verification algorithm. ...

Reference:

A Modular Program-Transformation Framework for Reducing Specifications to Reachability
Ultimate Automizer and the Abstraction of Bitwise Operations: (Competition Contribution)

Lecture Notes in Computer Science

... This supports our motivation for the clear separation of concerns. It [49] ✓ ✓ ✓ ✓ UTaipan [40] ✓ ✓ ✗ ✗ 2ls [56] ✓ ✗ ✗ ✓ PredatorHP [63] ✓ ✗ ✓ ✗ Symbiotic [53] ✓ ✓ ✓ ✓ Theta [11] ✓ ✗ ✗ ✗ EmergenTheta [10] ✓ ✗ ✗ ✗ CPV [36] ✓ ✗ ✗ ✗ suffices to improve the reachability analysis to perform well for multiple specifications. Last, RQ 4 evaluates, whether encoding the transformation directly into a C program loses performance when compared to the encoding of the transformation inside the verification algorithm. ...

Ultimate Taipan and Race Detection in Ultimate: (Competition Contribution)

Lecture Notes in Computer Science

... Assume we do not know that this error exists and we want to know whether a call to reach_error() is reachable. When we run the formal verifier UAutomizer [24,25] on the program with property "reach_error is never called", it reports an alarm. It also provides a violation witness that represents at least one claimed counterexample to the property. ...

Ultimate Automizer and the CommuHash Normal Form: (Competition Contribution)

Lecture Notes in Computer Science

... As a result, I can show that always terminates in the end. Heizmann et al. [34] proposes a modular construction of termination proofs for a generic programme based on lasso-shaped programme termination proofs acquired from its concrete pathways. The sequence in Heizmann et al. [34] is continued until either a non-terminating path is identified, ünknownïs returned, or the modules cover all of P's behaviours. ...

Termination Analysis by Learning Terminating Programs
  • Citing Book
  • January 2014

... Therefore, it is not surprising that solvers for CHC-formulas often adapt algorithms known in program verification. For example, HSF [10,3] uses predicate abstraction, Spacer 1 uses PDR [9,14], and Rahft [17] uses trace abstraction [12], to name just a few tools. Ultimate TreeAutomizer is part of this tradition and is an adaptation of the trace abstraction verification algorithm for procedural programs [13]. ...

Refinement of Trace Abstraction
  • Citing Book
  • January 2009

... This has been studied for a variety of applications. One such example is in the context of verification witnesses [7,18] in the case of MetaVal [28], which creates a product of the witness and the program. Another example is proof-carrying code [59], where the proof is embedded into the program. ...

Verification Witnesses
  • Citing Article
  • May 2022

ACM Transactions on Software Engineering and Methodology

... Deagle [33,65] is a SAT-based bounded model checker built on top of CBMC [12] with an efficient handling of concurrency and a tailored SAT decision procedure; it was the winner in the ConcurrencySafety category at SV-COMP 2023 [4], which subsumes the NoDataRace demo category of the previous edition of the competition. Ultimate GemCutter [45] is based on counterexampleguided abstraction refinement; it ranked first at SV-COMP 2022 [3] for the NoDataRace demo category. Goblint [61,66] is a static analyser for data race checking based on thread-modular abstract interpretation. ...

Ultimate GemCutter and the Axes of Generalization: (Competition Contribution)

Lecture Notes in Computer Science

... There are verifiers to validate counterexamples using the witness validation approach, which reproduces the verification results by checking a given counterexample based on the graphml format [12]. For instance, CPAchecker [13] and Ultimate Automizer [14] employ the error-witness-driven program analysis technique to avoid false alarms produced by verifiers, i.e., given a witness for a problematic program path, they re-verify that the witness indeed violates the specification. ...

Witness validation and stepwise testification across software verifiers
  • Citing Article
  • January 2016

... This observation is leveraged by many incremental software verification techniques, which aim to speed up the reverification of modified software. For Reducer-based Conditional Verifier [7] Reducer Verifier DG(P,P') condition residual program Fig. 1: Construction of a difference verifier example, there exist techniques that update previously computed state space descriptions [2,39,35,18,27,38], reuse intermediate results [42,1,9,36,16,46,20], or skip the analysis of unchanged behavior [43,34,37,44,29,12,28,6]. However, most approaches are tailored to and coupled with one specific verification approach. ...

Incremental verification using trace abstraction
  • Citing Article
  • January 2018