VLDB 2026 Research / reviewers in the wild / expert
Marie-Christine Jakobs
dblp:148/1305
· DBLP profile ↗
36ranked-venue papers
14as first author
21since 2021 · last 2026
0000-0002-5890-4673ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 36 · 14 first-author · 21 since 2021Theory of computation · 4 · 3 first-author · 3 since 2021
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | Ultimate TestGen: Combining Parallel Trace Abstraction and Symbolic Path Execution (Competition Contribution)
Max Barth, Daniel Dietsch, Matthias Heizmann, Marie-Christine Jakobs |
FASE | 4 |
| 2026 | Ultimate Paralizer: Parallel Trace Abstraction (Competition Contribution)
Max Barth, Daniel Dietsch, Matthias Heizmann, Marie-Christine Jakobs |
TACAS (2) | 4 |
| 2025 | Cooperative Software Verification via Dynamic Program SplittingabstractCooperative software verification divides the task of software verification among several verification tools in order to increase efficiency and effectiveness. The basic approach is to let verifiers work on different parts of a program and at the end join verification results. While this idea is intuitively appealing, cooperative verification is usually hindered by the fact that program decomposition (1) is often static, disregarding strengths and weaknesses of employed verifiers, and (2) often represents the decomposed program parts in a specific proprietary format, thereby making the use of off-the-shelf verifiers in cooperative verification difficult. In this paper, we propose a novel cooperative verification scheme that we call dynamic program splitting (DPS). Splitting decomposes programs into (smaller) programs, and thus directly enables the use of off-the-shelf tools. In DPS, splitting is dynamically applied on demand: Verification starts by giving a verification task (a program plus a correctness specification) to a verifier$V_{1}$. Whenever$V_{1}$finds the current task to be hard to verify, it splits the task (i.e., the program) and restarts verification on subtasks. DPS continues until (1) a violation is found, (2) all subtasks are completed or (3) some user-defined stopping criterion is met. In the latter case, the remaining uncompleted subtasks are merged into a single one and are given to a next verifier$V_{2}$, repeating the same procedure on the still unverified program parts. This way, the decomposition is steered by what is hard to verify for particular verifiers, leveraging their complementary strengths. We have implemented dynamic program splitting and evaluated it on benchmarks of the annual software verification competition SV-COMP. The evaluation shows that cooperative verification with DPS is able to solve verification tasks that none of the constituent verifiers can solve, without any significant overhead. Cedric Richter, Marek Chalupa, Marie-Christine Jakobs, Heike Wehrheim |
ICSE | 3 |
| 2025 | Preface for the special issue on "Selected Papers and Tools of the 26th International Conference on Fundamental Approaches to Software Engineering" (FASE 2023)
Carlos Diego Nascimento Damasceno, Marie-Christine Jakobs, Leen Lambers, Sebastián Uchitel |
Sci. Comput. Program. | 2 |
| 2024 | Ultimate TestGen: Test-Case Generation with Automata-based Software Model Checking (Competition Contribution)abstractAbstract 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. Max Barth, Daniel Dietsch, Matthias Heizmann, Marie-Christine Jakobs |
FASE | 4 |
| 2024 | Software Verification with CPAchecker 3.0: Tutorial and User GuideabstractAbstract This tutorial provides an introduction toCPAcheckerfor users.CPAcheckeris a flexible and configurable framework for software verification and testing. The framework provides many abstract domains, such as BDDs, explicit values, intervals, memory graphs, and predicates, and many program-analysis and model-checking algorithms, such as abstract interpretation, bounded model checking,Impact, interpolation-based model checking,k-induction, PDR, predicate abstraction, and symbolic execution. This tutorial presents basic use cases forCPAcheckerin formal software verification, focusing on its main verification techniques with their strengths and weaknesses. An extended version also shows further use cases ofCPAcheckerfor test-case generation and witness-based result validation. The envisioned readers are assumed to possess a background in automatic formal verification and program analysis, but prior knowledge ofCPAcheckeris not required. This tutorial and user guide is based onCPAcheckerin version 3.0. This user guide’s latest version and other documentation are available at https://cpachecker.sosy-lab.org/doc.php . Daniel Baier, Dirk Beyer 0001, Po-Chun Chien, Marie-Christine Jakobs, Marek Jankola, Matthias Kettl, Nian-Ze Lee, Thomas Lemberger 0002, Marian Lingsch Rosenfeld, Henrik Wachowitz, Philipp Wendler |
FM (2) | 4 |
| 2024 | Test-Case Generation with Automata-Based Software Model Checking
Max Barth, Marie-Christine Jakobs |
SPIN | 2 |
| 2024 | Refining CEGAR-Based Test-Case Generation with Feasibility Annotations
Max Barth, Marie-Christine Jakobs |
TAP | 2 |
| 2024 | Parallel program analysis on path rangesabstractSymbolic execution is a software verification technique symbolically running programs and thereby checking for bugs. Ranged symbolic execution performs symbolic execution on program parts, so-called path ranges, in parallel. Due to the parallelism, verification is accelerated and hence scales to larger programs. In this paper, we discuss a generalization of ranged symbolic execution to arbitrary program analyses. More specifically, we present a verification approach that splits programs into path ranges and then runs arbitrary analyses on the ranges in parallel. Our approach in particular allows to run different analyses on different program parts. We have implemented this generalization on top of the tool CPAchecker and evaluated it on programs from the SV-COMP benchmark. Our evaluation shows that verification can benefit from the parallelization of the verification task, but also needs a form of work stealing (between analyses) to become efficient. Jan Haltermann, Marie-Christine Jakobs, Cedric Richter, Heike Wehrheim |
Sci. Comput. Program. | 2 |
| 2024 | Preface for the special issue on "Fundamental Approaches to Software Engineering" (FASE 2022)
Marie-Christine Jakobs, Einar Broch Johnsen, Eduard Kamburjan, Manuel Wimmer |
Sci. Comput. Program. | 1 |
| 2023 | Parallel Program Analysis via Range SplittingabstractAbstract Ranged symbolic execution has been proposed as a way of scaling symbolic execution by splitting the task of path exploration onto several workers running in parallel. The split is conducted along path ranges which – simply speaking – describe sets of paths. Workers can then explore path ranges in parallel. In this paper, we propose ranged analysis as the generalization of ranged symbolic execution to arbitrary program analyses. This allows us to not only parallelize a single analysis, but also run different analyses on different ranges of a program in parallel. Besides this generalization, we also provide a novel range splitting strategy operating along loop bounds, complementing the existing random strategy of the original proposal. We implemented ranged analysis within the tool CPAchecker and evaluated it on programs from the SV-COMP benchmark. The evaluation in particular shows the superiority of loop bounds splitting over random splitting. We furthermore find that compositions of ranged analyses can solve analysis tasks that none of the constituent analysis alone can solve. Jan Haltermann, Marie-Christine Jakobs, Cedric Richter, Heike Wehrheim |
FASE | 2 |
| 2023 | diffDP: Using Data Dependencies and Properties in Difference Verification with Conditions
Marie-Christine Jakobs, Tim Pollandt |
iFM | 1 |
| 2023 | Ranged Program Analysis via Instrumentation
Jan Haltermann, Marie-Christine Jakobs, Cedric Richter, Heike Wehrheim |
SEFM | 2 |
| 2022 | PEQtest: Testing Functional EquivalenceabstractAbstract Refactoring a program without changing the program’s functional behavior is challenging. To prevent that behavioral changes remain undetected, one may apply approaches that compare the functional behavior of original and refactored programs. Difference detection approaches often use dedicated test generators and may be inefficient (i.e., execute (some of) the non-modified code twice). In contrast, proving functional equivalence often requires expensive verification. Therefore, we proposePEQtest, which aims at localized functional equivalence testing thereby relying on existing tests or test generators. To this end,PEQtestderives a test program from the original program by replacing each code segment being refactored with program code that encodes the equivalence of the original and its refactored code segment. The encoding is similar to program encodings used by some verification-based equivalence checkers. Furthermore, we prove that the test program derived byPEQtestindeed checks functional equivalence. Moreover, we implementedPEQtestin a prototype and evaluate it on several examples. Our evaluation shows thatPEQtestsuccessfully detects refactored programs that change the program behavior and that it often performs better than the state-of-the-art equivalence checkerPEQcheck. Marie-Christine Jakobs, Maik Wiesner |
FASE | 1 |
| 2022 | Reusing Predicate Precision in Value Analysis
Marie-Christine Jakobs |
IFM | 1 |
| 2022 | Are Neural Bug Detectors Comparable to Software Developers on Variable Misuse Bugs?abstractDebugging, that is, identifying and fixing bugs in software, is a central part of software development. Developers are therefore often confronted with the task of deciding whether a given code snippet contains a bug, and if yes, where. Recently, data-driven methods have been employed to learn this task of bug detection, resulting (amongst others) in so called neural bug detectors. Neural bug detectors are trained on millions of buggy and correct code snippets. Cedric Richter, Jan Haltermann, Marie-Christine Jakobs, Felix Pauck, Stefan Schott, Heike Wehrheim |
ASE | 3 |
| 2021 | CoVeriTest with Adaptive Time Scheduling (Competition Contribution)abstractAbstract CoVeriTest, which is integrated in the analysis framework CPAchecker, adopts verification technology for test-case generation. It encodes individual test goals as reachability queries, which are then processed by verifiers. To increase the effectiveness on a broad class of testing tasks, CoVeriTest leverages the strengths of two different analyses: an explicit value analysis and predicate abstraction. Similar to TestComp’20, the two analyses are interleaved and the time duration of an interleaving segment is calculated dynamically. However, the calculation of the time duration focuses on the predicted future performance instead of the past performance, thus, rewarding analyses that likely cover open test goals. Marie-Christine Jakobs, Cedric Richter |
FASE | 1 |
| 2021 | PatEC: Pattern-Based Equivalence Checking
Marie-Christine Jakobs |
SPIN | 1 |
| 2021 | Verifying Pipeline Implementations in OpenMP
Maik Wiesner, Marie-Christine Jakobs |
SPIN | 2 |
| 2021 | Cooperative verifier-based testing with CoVeriTestabstractAbstract Testing is a widely applied technique to evaluate software quality, and coverage criteria are often used to assess the adequacy of a generated test suite. However, manually constructing an adequate test suite is typically too expensive, and numerous techniques for automatic test-suite generation were proposed. All of them come with different strengths. To build stronger test-generation tools, different techniques should be combined. In this paper, we study cooperative combinations of verification approaches for test generation, which exchange high-level information. We present CoVeriTest, a hybrid technique for test-suite generation. CoVeriTest iteratively applies different conditional model checkers and allows users to adjust the level of cooperation and to configure individual time limits for each conditional model checker. In our experiments, we systematically study different CoVeriTest cooperation setups, which either use combinations of explicit-state model checking and predicate abstraction, or bounded model checking and symbolic execution. A comparison with state-of-the-art test-generation tools reveals that CoVeriTest achieves higher coverage for many programs (about 15%). Dirk Beyer 0001, Marie-Christine Jakobs |
Int. J. Softw. Tools Technol. Transf. | 2 |
| 2021 | CoVeriTest: interleaving value and predicate analysis for test-case generationabstractAbstract Verification techniques are well-suited for automatic test-case generation. They basically need to check the reachability of every test goal and generate test cases for all reachable goals. This is also the basic idea of our CoVeriTest submission. However, the set of test goals is not fixed in CoVeriTest , instead we can configure the set of test goals. For Test-Comp’19, we support the set of all ___ calls as well as the set of all branches. Thus, we can deal with the two test specifications considered in Test-Comp’19. Since the tasks in Test-Comp are diverse and verification techniques have different strengths and weaknesses, we also do not stick to a single verification technique, but use a hybrid approach that combines multiple techniques. More concrete, CoVeriTest interleaves different verification techniques and allows to configure the cooperation (i.e., information exchange and time limits). To choose from a large set of verification techniques, CoVeriTest is integrated into the analysis framework CPAchecker. For the competition, we interleave CPAchecker’s value and predicate analysis and let both analyses resume their analysis performed in the previous iteration. Marie-Christine Jakobs |
Int. J. Softw. Tools Technol. Transf. | 1 |
| 2020 | CoVeriTest with Dynamic Partitioning of the Iteration Time Limit (Competition Contribution)abstractOur CoVeriTest submission, which is implemented in the analysis framework CPAchecker , uses verification techniques for automatic test-case generation. To this end, it checks the reachability of every test goal and generates one test case per reachable goal. Instead of checking the reachability of every test goal individually, which is too expensive, CoVeriTest considers all test goals at once and removes already covered goals from future reachability queries. To deal with the diverse set of Test-Comp tasks, CoVeriTest uses a hybrid approach that interleaves value and predicate analysis. In contrast to Test-Comp’19, the time limit per iteration is no longer fixed for an analysis. Instead, we fix the iteration time limit and split it dynamically among the analyses, rewarding analyses that previously covered more test goals per time unit. Marie-Christine Jakobs |
FASE | 1 |
| 2020 | HybridTiger: Hybrid Model Checking and Domination-based Partitioning for Efficient Multi-Goal Test-Suite Generation (Competition Contribution)abstractIn theory, software model checkers are well-suited for automated test-case generation. The idea is to perform (non-)reachability queries for the test goals and extract test cases from resulting counterexamples. However, in case of realistic programs, even simple coverage criteria (e.g., branch coverage) force model checkers to deal with several hundreds or even thousands of test goals. Processing each of these test goals in isolation with model checking techniques does not scale. Therefore, our tool HybridTiger builds on recent ideas on multi-property verification. However, since every additional property (i.e., test goal) reduces the model checker’s abstraction possibilities, we split the set of all test goals into different partitions. In Test-Comp 2019, we applied a random partitioning strategy and used predicate analysis as model checking technique. In Test-Comp 2020, we improved our technique in two ways. First, we exploit domination information among control-flow locations in our partitioning strategy to group test goals being located on (preferably) similar paths. Second, we account to inherent weaknesses of the predicate analysis by applying a hybrid software model-checking approach that switches between explicit model checking and predicate-based model checking on-the-fly. Our tool HybridTiger is integrated into the software analysis framework CPAchecker . Sebastian Ruland, Malte Lochau, Marie-Christine Jakobs |
FASE | 3 |
| 2020 | A Unifying Framework for Dynamic Monitoring and a Taxonomy of Optimizations
Marie-Christine Jakobs, Heiko Mantel |
ISoLA (2) | 1 |
| 2020 | FRed: Conditional Model Checking via Reducers and FoldersabstractAbstract There are many hard verification problems that are currently only solvable by applying several verifiers that are based on complementing technologies. Conditional model checking (CMC) is a successful solution for cooperation between verification tools. In CMC, the first verifier outputs a condition describing the state space that it successfully verified. The second verifier uses the condition to focus its verification on the unverified state space. To use arbitrary second verifiers, we recently proposed a reducer-based approach. One can use the reducer-based approach to construct a conditional verifier from a reducer and a (non-conditional) verifier: the reducer translates the condition into a residual program that describes the unverified state space and the verifier can be any off-the-shelf verifier (that does not need to understand conditions). Until now, only one reducer was available. But for a systematic investigation of the reducer concept, we need several reducers. To fill this gap, we developed FRed, a Framework for exploring different REDucers. Given an existing reducer, FRed allows us to derive various new reducers, which differ in their trade-off between size and precision of the residual program. For our experiments, we derived seven different reducers. Our evaluation on the largest and most diverse public collection of verification problems shows that we need all seven reducers to solve hard verification tasks that were not solvable before with the considered verifiers. Dirk Beyer 0001, Marie-Christine Jakobs |
SEFM | 2 |
| 2020 | Difference Verification with ConditionsabstractAbstract Modern software-verification tools need to support development processes that involve frequent changes. Existing approaches for incremental verification hard-code specific verification techniques. Some of the approaches must be tightly intertwined with the development process. To solve this open problem, we present the concept of difference verification with conditions. Difference verification with conditions is independent from any specific verification technique and can be integrated in software projects at any time. It first applies a change analysis that detects which parts of a software were changed between revisions and encodes that information in a condition. Based on this condition, an off-the-shelf verifier is used to verify only those parts of the software that are influenced by the changes. As a proof of concept, we propose a simple, syntax-based change analysis and use difference verification with conditions with three off-the-shelf verifiers. An extensive evaluation shows the competitiveness of difference verification with conditions. Dirk Beyer 0001, Marie-Christine Jakobs, Thomas Lemberger 0002 |
SEFM | 2 |
| 2020 | Algorithm selection for software validation based on graph kernelsabstractAbstract Algorithm selection is the task of choosing an algorithm from a given set of candidate algorithms when faced with a particular problem instance. Algorithm selection via machine learning (ML) has recently been successfully applied for various problem classes, including computationally hard problems such as SAT. In this paper, we study algorithm selection forsoftware validation, i.e., the task of choosing a software validation tool for a given validation instance. A validation instance consists of a program plus properties to be checked on it. The application of machine learning techniques to this task first of all requires an appropriaterepresentationof software. To this end, we propose a dedicatedkernel function, which compares two programs in terms of their similarity, thus making the algorithm selection task amenable to kernel-based machine learning methods. Our kernel operates on a graph representation of source code mixing elements of control-flow and program-dependence graphs with abstract syntax trees. Thus, given two such representations as input, the kernel function yields a real-valued score that can be interpreted as a degree of similarity. We experimentally evaluate our kernel in two learning scenarios, namely a classification and a ranking problem: (1) selecting between a verification and a testing tool for bug finding (i.e., property violation), and (2) ranking several verification tools, from presumably best to worst, for property proving. The evaluation, which is based on data sets from the annual software verification competition SV-COMP, demonstrates our kernel to generalize well and to achieve rather high prediction accuracy, both for the classification and the ranking task. Cedric Richter, Eyke Hüllermeier, Marie-Christine Jakobs, Heike Wehrheim |
Autom. Softw. Eng. | 3 |
| 2019 | CoVeriTest: Cooperative Verifier-Based TestingabstractTesting is a widely used method to assess software quality. Coverage criteria and coverage measurements are used to ensure that the constructed test suites adequately test the given software. Since manually developing such test suites is too expensive in practice, various automatic test-generation approaches were proposed. Since all approaches come with different strengths, combinations are necessary in order to achieve stronger tools. We study cooperative combinations of verification approaches for test generation, with high-level information exchange. We present , a hybrid approach for test-case generation, which iteratively applies different conditional model checkers. Thereby, it allows to adjust the level of cooperation and to assign individual time budgets per verifier. In our experiments, we combine explicit-state model checking and predicate abstraction (from ) to systematically study different configurations. Moreover, achieves higher coverage than state-of-the-art test-generation tools for some programs. Dirk Beyer 0001, Marie-Christine Jakobs |
FASE | 2 |
| 2018 | Reducer-based construction of conditional verifiersabstractDespite recent advances, software verification remains challenging. To solve hard verification tasks, we need to leverage not just one but several different verifiers employing different technologies. To this end, we need to exchange information between verifiers. Conditional model checking was proposed as a solution to exactly this problem: The idea is to let the first verifier output a condition which describes the state space that it successfully verified and to instruct the second verifier to verify the yet unverified state space using this condition. However, most verifiers do not understand conditions as input. Dirk Beyer 0001, Marie-Christine Jakobs, Thomas Lemberger 0002, Heike Wehrheim |
ICSE | 2 |
| 2018 | JMCTest: Automatically Testing Inter-Method Contracts in Java
Paul Börding, Jan Haltermann, Marie-Christine Jakobs, Heike Wehrheim |
ICTSS | 3 |
| 2017 | PART _\mathrm PW : From Partial Analysis Results to a Proof Witness
Marie-Christine Jakobs |
SEFM | 1 |
| 2017 | Programs from Proofs: A Framework for the Safe Execution of Untrusted SoftwareabstractToday, software is traded worldwide on global markets, with apps being downloaded to smartphones within minutes or seconds. This poses, more than ever, the challenge of ensuring safety of software in the face of (1) unknown or untrusted software providers together with (2) resource-limited software consumers. The concept of Proof-Carrying Code (PCC), years ago suggested by Necula, provides one framework for securing the execution of untrusted code. PCC techniques attach safety proofs, constructed by software producers, to code. Based on the assumption that checking proofs is usually much simpler than constructing proofs, software consumers should thus be able to quickly check the safety of software. However, PCC techniques often suffer from the size of certificates (i.e., the attached proofs), making PCC techniques inefficient in practice. In this article, we introduce a new framework for the safe execution of untrusted code called Programs from Proofs (PfP). The basic assumption underlying the PfP technique is the fact that the structure of programs significantly influences the complexity of checking a specific safety property. Instead of attaching proofs to program code, the PfP technique transforms the program into an efficiently checkable form, thus guaranteeing quick safety checks for software consumers. For this transformation, the technique also uses a producer-side automatic proof of safety. More specifically, safety proving for the software producer proceeds via the construction of an abstract reachability graph (ARG) unfolding the control-flow automaton (CFA) up to the degree necessary for simple checking. To this end, we combine different sorts of software analysis: expensive analyses incrementally determining the degree of unfolding, and cheap analyses responsible for safety checking. Out of the abstract reachability graph we generate the new program. In its CFA structure, it is isomorphic to the graph and hence another, this time consumer-side, cheap analysis can quickly determine its safety. Like PCC, Programs from Proofs is a general framework instantiable with different sorts of (expensive and cheap) analysis. Here, we present the general framework and exemplify it by some concrete examples. We have implemented different instantiations on top of the configurable program analysis tool CPA checker and report on experiments, in particular on comparisons with PCC techniques. Marie-Christine Jakobs, Heike Wehrheim |
ACM Trans. Program. Lang. Syst. | 1 |
| 2015 | Just Test What You Cannot Verify!
Mike Czech, Marie-Christine Jakobs, Heike Wehrheim |
FASE | 2 |
| 2015 | Speed Up Configurable Certificate Validation by Certificate Reduction and Partitioning
Marie-Christine Jakobs |
SEFM | 1 |
| 2014 | Integrating Software and Hardware Verification
Marie-Christine Jakobs, Marco Platzner, Heike Wehrheim, Tobias Wiersema |
IFM | 1 |
| 2014 | Certification for configurable program analysisabstractConfigurable program analysis (CPA) is a generic concept for the formalization of different software analysis techniques in a single framework. With the tool CPAchecker, this framework allows for an easy configuration and subsequent automatic execution of analysis procedures ranging from data-flow analysis to model checking. The focus of the tool CPAchecker is thus on analysis. In this paper, we study configurability from the point of view of software certification. Certification aims at providing (via a prior analysis) a certificate of correctness for a program which is (a) tamper-proof and (b) more efficient to check for validity than a full analysis. Here, we will show how, given an analysis instance of a CPA, to construct a corresponding sound certification instance, thereby arriving at configurable program certification. We report on experiments with certification based on different analysis techniques, and in particular explain which characteristics of an underlying analysis allow us to design an efficient (in the above (b) sense) certification procedure. Marie-Christine Jakobs, Heike Wehrheim |
SPIN | 1 |