January 2025
·
4 Reads
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.
January 2025
·
4 Reads
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.
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.
April 2024
·
8 Reads
April 2024
·
13 Reads
The poster presents Ultimate GemCutter, an automated verifier for concurrent C programs based on commutativity / partial order reduction and abstraction refinement.
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.
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.
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.
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.
April 2023
·
17 Reads
... 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. ...
April 2024
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. ...
April 2023
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. ...
April 2023
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. ...
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]. ...
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. ...
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. ...
March 2022
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. ...
January 2016
... UltimateTaipan 91b1670e [19]. Similar to UltimateAutomizer, UltimateTaipan employs automata-based trace abstraction and CEGAR. ...
January 2017
... 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. ...
January 2018