EDBT 2026 Demo / reviewers in the wild / expert
Heike Wehrheim
dblp:w/HeikeWehrheim
· DBLP profile ↗
127ranked-venue papers
9as first author
39since 2021 · last 2026
0000-0002-2385-7512ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 88 · 4 first-author · 27 since 2021Theory of computation · 53 · 6 first-author · 15 since 2021Computer networks · 4 · 1 first-authorArtificial intelligence and machine learning · 3 · 2 since 2021Systems, architecture and hardware · 2Databases, data management, data science and information retrieval · 2 · 1 since 2021Applied, interdisciplinary, general and emerging computing · 1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | Towards Proving Liveness on Weak MemoryabstractAbstract Reasoning about concurrent programs executed on weak memory models is an inherently complex task. So far, existing proof calculi for weak memory models only cover safety properties. In this paper, we provide the first proof calculus for reasoning about liveness . Our proof calculus is based on Manna and Pnueli’s proof rules for response under weak fairness, formulated in linear temporal logic. Our extension includes the incorporation of memory fairness into rules as well as the usage of ranking functions defined over weak memory state. We have applied our reasoning technique to the Ticket lock algorithm and have proved it to guarantee starvation freedom under memory models Release-Acquire and Strong Coherence for any number of concurrent threads. Lara Bargmann, Heike Wehrheim |
FM (1) | 2 |
| 2026 | jMT: Testing Correctness of Java Memory Models
Lukas Panneke, Heike Wehrheim |
TACAS (2) | 2 |
| 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 | 4 |
| 2025 | Model Checking Buffered Durable Linearizability in CSP
Chelsea Edmonds, John Derrick, Brijesh Dongol, Gerhard Schellhorn, Heike Wehrheim |
iFM | 5 |
| 2025 | Canonical Automata for Persistent Linearizability - A CorrigendumabstractLinearizability is the standard correctness condition for concurrent data structures. Linearizability is often shown via refinement, i.e., a data structure implementation is shown to refine a so-called canonical abstract automaton specifying the intented behavior. For non-volatile memory (NVM) with novel consistency constraints, the notion of linearizability has been extended to provide persistence guarantees. The results are several notions of “persistent linearizability”. In this paper, we provide canonical automata for two such conditions: strict and durable linearizability, thereby providing abstract specifications for refinement proofs. We thus correct an error in the article Verifying correctness of persistent concurrent data structures: a sound and complete method [ 8 ]. Heike Wehrheim |
Formal Aspects Comput. | 1 |
| 2025 | View-based axiomatic reasoning for the weak memory models PSO and SRAabstractWeak memory models describe the semantics of concurrent programs in modern multicore architectures. As these semantics deviate from the commonly assumed model of sequential consistency, reasoning techniques like Owicki-Gries-style proof calculi need to be adapted to specific memory models. To avoid having to design a new proof calculus for every new memory model, a uniform approach for axiomatic reasoning has recently been proposed. This approach bases reasoning on memory-model independent axioms about thread views and how they are changed by program actions like reads and writes. It allows to prove program correctness based on axioms only. Such proofs are valid for all memory models instantiating the axioms. In this paper, we study instantiations of the axioms for two memory models, the Partial Store Order (PSO) and the Strong Release Acquire (SRA) model. We see that both models fulfil all but one axiom, a different one though. For PSO, the missing axiom refers to message-passing abilities of memory models; for SRA, the missing axiom refers to the independence of actions on executing threads. We discuss the consequences of these missing axioms and illustrate the reasoning technique on a specific litmus test. Lara Bargmann, Heike Wehrheim |
Sci. Comput. Program. | 2 |
| 2024 | Can ChatGPT support software verification?abstractAbstract Large language models have become increasingly effective in software engineering tasks such as code generation, debugging and repair. Language models like ChatGPT can not only generate code, but also explain its inner workings and in particular its correctness. This raises the question whether we can utilize ChatGPT to support formal software verification. In this paper, we take some first steps towards answering this question. More specifically, we investigate whether ChatGPT can generate loop invariants. Loop invariant generation is a core task in software verification, and the generation of valid and useful invariants would likely help formal verifiers. To provide some first evidence on this hypothesis, we ask ChatGPT to annotate 106 C programs with loop invariants. We check validity and usefulness of the generated invariants by passing them to two verifiers, Frama-C and CPAchecker. Our evaluation shows that ChatGPT is able to produce valid and useful invariants allowing Frama-C to verify tasks that it could not solve before. Based on our initial insights, we propose ways of combining ChatGPT (or large language models in general) and software verifiers, and discuss current limitations and open issues. Christian Janssen, Cedric Richter, Heike Wehrheim |
FASE | 3 |
| 2024 | Unifying Weak Memory Verification Using PotentialsabstractAbstract Concurrency verification for weak memory models is inherently complex. Several deductive techniques based on proof calculi have recently been developed, but these are typically tailored towards a single memory model through specialised assertions and associated proof rules. In this paper, we propose an extension to the logic $${\textsf{Piccolo}}$$ Piccolo to generalise reasoning across different memory models. $${\textsf{Piccolo}}$$ Piccolo is interpreted on the semantic domain of thread potentials. By deriving potentials from weak memory model states, we can define the validity of $${\textsf{Piccolo}}$$ Piccolo formulae for multiple memory models. We moreover propose unified proof rules for verification on top of $${\textsf{Piccolo}}$$ Piccolo . Once (a set of) such rules has been shown to be sound with respect to a memory model $${\textsf{MM}} $$ MM , all correctness proofs employing this rule set are valid for $${\textsf{MM}}$$ MM . We exemplify our approach on the memory models $${\textsf{SC}}$$ SC , $${\textsf{TSO}}$$ TSO and $${\textsf{SRA}}$$ SRA using the standard litmus tests Message-Passing and IRIW. Lara Bargmann, Brijesh Dongol, Heike Wehrheim |
FM (1) | 3 |
| 2024 | A Fully Verified Persistency Library
Stefan Bodenmüller, John Derrick, Brijesh Dongol, Gerhard Schellhorn, Heike Wehrheim |
VMCAI (2) | 5 |
| 2024 | Introduction to the Special Collection from the International Conference on Tests and Proofs (TAP) 2020 and 2021abstractTesting and formal proving are two core methods for ensuring high software quality, with testing being a dynamic and proving a static analysis technique.The TAP (Tests and Proofs) conference series promotes research in verification and formal methods that targets the interplay of proofs and testing: the advancement of techniques of each kind and their combination, with the ultimate goal of improving software and system dependability.This special issue contains selected papers of the 14th and 15th edition of TAP in 2020 and 2021, respectively.Out of the 16 papers accepted for TAP 2020 and 2021, published by Springer in their LNCS series, 7 papers were invited for this special issue and 3 finally were accepted.The papers cover combinations of fuzzing, runtime assertion checking, automata learning (specifically an evaluation of different learning and testing algorithms), and program transformation:-"JMLKelinci+: Detecting Semantic Bugs and Covering Branches with Valid Inputs Using Coverage-Guided Fuzzing and Runtime Assertion Checking" by Amirfarhad Nilizadeh, Gary T. Leavens, Corina S. Pǎsǎreanu, and Yannic Noller, -"Benchmarking Combinations of Learning and Testing Algorithms for Automata Learning" by Bernhard K. Aichernig, Martin Tappler, and Felix Wallner, and -"Sound Runtime Assertion Checking for Memory Properties via Program Transformation" by Dara Ly, Nikolai Kosmatov, Frédéric Loulergue, and Julien Signoles. Wolfgang Ahrendt, Frédéric Loulergue, Heike Wehrheim |
Formal Aspects Comput. | 3 |
| 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. | 4 |
| 2024 | Exchanging information in cooperative software validationabstractAbstract Cooperative software validation aims at having verification and/or testing tools cooperate on the task of correctness checking. Cooperation involves the exchange of information about currently achieved results in the form of (verification) artifacts. These artifacts are typically specialized to the type of analysis performed by the tool, e.g., bounded model checking, abstract interpretation or symbolic execution, and hence require the definition of a new artifact for every new cooperation to be built. In this article, we introduce a unified artifact (called Generalized Information Exchange Automaton, short GIA) supporting the cooperation of over-approximating with under-approximating analyses. It provides information gathered by an analysis to its partner in a cooperation, independent of the type of analysis and usage context within software validation. We provide a formal definition of this artifact in the form of an automaton together with two operators on GIAs. The first operation reduces a program by excluding these parts, where the information that they are already processed is encoded in the GIA. The second operation combines partial results from two GIAs into a single on. We show that computed analysis results are never lost when connecting tools via these operations. To experimentally demonstrate the feasibility, we have implemented two such cooperation: one for verification and one for testing. The obtained results show the feasibility of our novel artifact in different contexts of cooperative software validation, in particular how the new artifact is able to overcome some drawbacks of existing artifacts. Jan Haltermann, Heike Wehrheim |
Softw. Syst. Model. | 2 |
| 2023 | Rely-Guarantee Reasoning for Causally Consistent Shared MemoryabstractAbstract Rely-guarantee (RG) is a highly influential compositional proof technique for concurrent programs, which was originally developed assuming a sequentially consistent shared memory. In this paper, we first generalize RG to make it parametric with respect to the underlying memory model by introducing an RG framework that is applicable to any model axiomatically characterized by Hoare triples. Second, we instantiate this framework for reasoning about concurrent programs under causally consistent memory, which is formulated using a recently proposed potential-based operational semantics, thereby providing the first reasoning technique for such semantics. The proposed program logic, which we call $${\textsf{Piccolo}}$$ Piccolo , employs a novel assertion language allowing one to specify ordered sequences of states that each thread may reach. We employ $${\textsf{Piccolo}}$$ Piccolo for multiple litmus tests, as well as for an adaptation of Peterson’s algorithm for mutual exclusion to causally consistent memory. Ori Lahav 0001, Brijesh Dongol, Heike Wehrheim |
CAV (1) | 3 |
| 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 | 4 |
| 2023 | Reasoning About Promises in Weak Memory Models with Event Structures
Heike Wehrheim, Lara Bargmann, Brijesh Dongol |
FM | 1 |
| 2023 | Lifting the Reasoning Level in Generic Weak Memory Verification
Lara Bargmann, Heike Wehrheim |
iFM | 2 |
| 2023 | How to Train Your Neural Bug Detector: Artificial vs Real BugsabstractReal bug fixes found in open source repositories seem to be the perfect source for learning to localize and repair real bugs. Yet, the scale of existing bug fix collections is typically too small for training data-intensive neural approaches. Neural bug detectors are hence almost exclusively trained on artificial bugs, produced by mutating existing source code and thus easily obtainable at large scales. However, neural bug detectors trained on artificial bugs usually underperform when faced with real bugs. To address this shortcoming, we set out to explore the impact of training on real bug fixes at scale. Our systematic study compares neural bug detectors trained on real bug fixes, artificial bugs and mixtures of real and artificial bugs at various dataset scales and with varying training techniques. Based on our insights gained from training on a novel dataset of 33k real bug fixes, we were able to identify a training setting capable of significantly improving the performance of existing neural bug detectors by up to 170% on simple bugs in Python. In addition, our evaluation shows that further gains can be expected by increasing the size of the real bug fix dataset or the code dataset used for generating artificial bugs. To facilitate future research on neural bug detection, we release our real bug fix dataset, trained models and code. Cedric Richter, Heike Wehrheim |
ASE | 2 |
| 2023 | Robustness Testing of Software Verifiers
Florian Dyck, Cedric Richter, Heike Wehrheim |
SEFM | 3 |
| 2023 | Ranged Program Analysis via Instrumentation
Jan Haltermann, Marie-Christine Jakobs, Cedric Richter, Heike Wehrheim |
SEFM | 4 |
| 2023 | Timeout Prediction for Software Analyses
Nicola Thoben, Jan Haltermann, Heike Wehrheim |
SEFM | 3 |
| 2023 | View-Based Axiomatic Reasoning for PSO
Lara Bargmann, Heike Wehrheim |
TASE | 2 |
| 2022 | Weak Progressive Forward Simulation Is Necessary and Sufficient for Strong Observational RefinementabstractHyperproperties are correctness conditions for labelled transition systems that are more expressive than traditional trace properties, with particular relevance to security. Recently, Attiya and Enea studied a notion of strong observational refinement that preserves all hyperproperties. They analyse the correspondence between forward simulation and strong observational refinement in a setting with finite traces only. We study this correspondence in a setting with both finite and infinite traces. In particular, we show that forward simulation does not preserve hyperliveness properties in this setting. We extend the forward simulation proof obligation with a progress condition, and prove that this progressive forward simulation does imply strong observational refinement. Brijesh Dongol, Gerhard Schellhorn, Heike Wehrheim |
CONCUR | 3 |
| 2022 | Decomposing Software Verification into Off-the-Shelf Components: An Application to CEGARabstractTechniques for software verification are typically realized as cohesive units of software with tightly coupled components. This makes it difficult to re-use components, and the potential for workload distribution is limited. Innovations in software verification might find their way into practice faster if provided in smaller, more specialized components. Dirk Beyer 0001, Jan Haltermann, Thomas Lemberger 0002, Heike Wehrheim |
ICSE | 4 |
| 2022 | Machine Learning Based Invariant Generation: A Framework and Reproducibility StudyabstractSoftware verification is the task of proving correct-ness of programs against specified requirements. Key to software verification is the automatic generation of loop invariants. In recent years, template- and logic-based approaches to invariant generation have been complemented by machine learning (ML) techniques. A number of proposals for such techniques exist today. Although all authors perform experimental evaluations of their proposals, comparability of the core techniques is nev-ertheless hindered by differing benchmarks, specific tunings of hyperparameters, missing public availability as well as specialized preprocessings and runtime environments. In this paper, we present the modular framework MIGMLfor experimentation with and comparison of ML invariant generators. MIGMLcontains the core ingredients of ML based invariant generators (i.e. a teacher and a learner) as instantiable components with clear-cut interfaces. This conceptually novel framework allows for a reproducibility study of four existing ML invariant generators: we re-implement the teacher and learner components of the four techniques within our framework which permits a comparison on equal grounds. We are able to successfully reproduce and partially confirm the reported results. We furthermore experiment with novel combinations of components, e.g. employ the data generator within the teacher of technique A together with the learner of technique B. As a result, we observe that such combinations can lead to an overall enhanced effectiveness. Jan Haltermann, Heike Wehrheim |
ICST | 2 |
| 2022 | Learning Realistic Mutations: Bug Creation for Neural Bug DetectorsabstractMutations are small, often token-level changes to program code, typically performed during mutation testing for evaluating the quality of test suites. Recently, code mutations have come in use for creating benchmarks of buggy code. Such bug benchmarks present valuable aids for the evaluation of testing, debugging or bug repair tools. Moreover, they can serve as training data for learning-based (neural) bug detectors. Key to all these applications is the creation of realistic bugs which closely resemble mistakes made by software developers. In this paper, we present a learning-based approach to mutation. We propose a novel contextual mutation operator which incorporates knowledge about the mutation context to inject natural and more realistic bugs into code. Our approach employs a masked language model to produce a context-dependent distribution over feasible token replacements. The strategy for producing realistic mutations is thus learned. Our experimental evaluation on Java, JavaScript and Python programs shows that sampling from a language model does not only produce mutants which more accurately represent real bugs (with a reproduction score nearly 70% higher than for mutations employed in testing), but also lead to better performing bug detectors when trained on thus generated bug benchmarks. Cedric Richter, Heike Wehrheim |
ICST | 2 |
| 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 | 6 |
| 2022 | TSSB-3M: Mining single statement bugs at massive scaleabstractSingle statement bugs are one of the most important ingredients in the evaluation of modern bug detection and automatic program repair methods. By affecting only a single statement, single statement bugs represent a type of bug often overlooked by developers, while still being small enough to be detected and fixed by automatic methods. With the rise of data-driven automatic repair the availability of single statement bugs at the scale of millionth of examples is more important than ever; not only for testing these methods but also for providing sufficient real world examples for training. To provide access to bug fix datasets of this scale, we are releasing two datasets called SSB-9M and TSSB-3M. While SSB-9M provides access to a collection of over 9M general single statement bug fixes from over 500K open source Python projects, TSSB-3M focuses on over 3M single statement bugs which can be fixed solely by a single statement change. To facilitate future research and empirical investigations, we annotated each bug fix with one of 20 single statement bug (SStuB) patterns typical for Python together with a characterization of the code change as a sequence of AST modifications. Our initial investigation shows that at least 40% of all single statement bug fixes mined fit at least one SStuB pattern, and that the majority of 72% of all bugs can be fixed with the same syntactic modifications as needed for fixing SStuBs. Cedric Richter, Heike Wehrheim |
MSR | 2 |
| 2022 | Information Exchange Between Over- and Underapproximating Software Analyses
Jan Haltermann, Heike Wehrheim |
SEFM | 2 |
| 2022 | Integrating Owicki-Gries for C11-Style Memory Models into Isabelle/HOLabstractAbstract Weak memory presents a new challenge for program verification and has resulted in the development of a variety of specialised logics. For C11-style memory models, our previous work has shown that it is possible to extend Hoare logic and Owicki–Gries reasoning to verify correctness of weak memory programs. The technique introduces a set of high-level assertions over C11 states together with a set of basic Hoare-style axioms over atomic weak memory statements (e.g. reads/writes), but retains all other standard proof obligations for compound statements. This paper takes this line of work further by introducing the first deductive verification environment in Isabelle/HOL for C11-like weak memory programs. This verification environment is built on the Nipkow and Nieto’s encoding of Owicki–Gries in the Isabelle theorem prover. We exemplify our techniques over several litmus tests from the literature and two non-trivial examples: Peterson’s algorithm and a read–copy–update algorithm adapted for C11. For the examples we consider, the proof outlines can be automatically discharged using the existing Isabelle tactics developed by Nipkow and Nieto. The benefit here is that programs can be written using a familiar pseudocode syntax with assertions embedded directly into the program. Mohammadsadegh Dalvandi, Brijesh Dongol, Simon Doherty, Heike Wehrheim |
J. Autom. Reason. | 4 |
| 2022 | Modularising Verification Of Durable OpacityabstractNon-volatile memory (NVM), also known as persistent memory, is an emerging paradigm for memory that preserves its contents even after power loss. NVM is widely expected to become ubiquitous, and hardware architectures are already providing support for NVM programming. This has stimulated interest in the design of novel concepts ensuring correctness of concurrent programming abstractions in the face of persistency and in the development of associated verification approaches. Software transactional memory (STM) is a key programming abstraction that supports concurrent access to shared state. In a fashion similar to linearizability as the correctness condition for concurrent data structures, there is an established notion of correctness for STMs known as opacity. We have recently proposed durable opacity as the natural extension of opacity to a setting with non-volatile memory. Together with this novel correctness condition, we designed a verification technique based on refinement. In this paper, we extend this work in two directions. First, we develop a durably opaque version of NOrec (no ownership records), an existing STM algorithm proven to be opaque. Second, we modularise our existing verification approach by separating the proof of durability of memory accesses from the proof of opacity. For NOrec, this allows us to re-use an existing opacity proof and complement it with a proof of the durability of accesses to shared state. Eleni Bila, John Derrick, Simon Doherty, Brijesh Dongol, Gerhard Schellhorn, Heike Wehrheim |
Log. Methods Comput. Sci. | 6 |
| 2022 | Unifying Operational Weak Memory Verification: An Axiomatic ApproachabstractIn this article, we propose an approach to program verification using an abstract characterisation of weak memory models. Our approach is based on a hierarchical axiom scheme that captures the observational properties of a memory model. In particular, we show that it is possible to prove correctness of a program with respect to a particular axiom scheme, and we show this proof to suffice for any memory model that satisfies the axioms. Our axiom scheme is developed using a characterisation of weakest liberal preconditions for weak memory. This characterisation naturally extends to Hoare logic and Owicki-Gries reasoning by lifting weakest liberal preconditions (defined over read/write events) to the level of programs. We study three memory models (SC, TSO, and RC11-RAR) as example instantiations of the axioms, then we demonstrate the applicability of our reasoning technique on a number of litmus tests. The majority of the proofs in this article are supported by mechanisation within Isabelle/HOL. Simon Doherty, Mohammadsadegh Dalvandi, Brijesh Dongol, Heike Wehrheim |
ACM Trans. Comput. Log. | 4 |
| 2021 | CoVEGI: Cooperative Verification via Externally Generated InvariantsabstractAbstract Software verification has recently made enormous progress due to the development of novel verification methods and the speed-up of supporting technologies like SMT solving. To keep software verification tools up to date with these advances, tool developers keep on integrating newly designed methods into their tools, almost exclusively by re-implementing the method within their own framework. While this allows for a conceptual re-use of methods, it nevertheless requires novel implementations for every new technique. In this paper, we employ cooperative verification in order to avoid re-implementation and enable usage of novel tools as black-box components in verification. Specifically, cooperation is employed for the core ingredient of software verification which is invariant generation. Finding an adequate loop invariant is key to the success of a verification run. Our framework named CoVEGI allows a master verification tool to delegate the task of invariant generation to one or several specialized helper invariant generators. Their results are then utilized within the verification run of the master verifier, allowing in particular for crosschecking the validity of the invariant. We experimentally evaluate our framework on an instance with two masters and three different invariant generators using a number of benchmarks from SV-COMP 2020. The experiments show that the use of CoVEGI can increase the number of correctly verified tasks without increasing the used resources. Jan Haltermann, Heike Wehrheim |
FASE | 2 |
| 2021 | MLCHECK- Property-Driven Testing of Machine Learning ClassifiersabstractAn increasing amount of software with machine learning components is being deployed. This poses the question of quality assurance for such components: how can we validate whether specified requirements are fulfilled by a machine learned software? Current testing and verification approaches either focus on a single requirement (e.g., fairness) or specialize in a single type of machine learning model (e.g., neural networks). We propose the property-driven testing of machine learning models. Our approach MLCHECK encompasses (1) a language for property specification, and (2) a technique for systematic test case generation. The specification language is comparable to property-based testing languages. The test case generation employs an elaborate verification method for a systematic, property-dependent construction of test suites, without additional user-supplied generator functions. We evaluate MLCHECK using requirements and data sets from three different application areas (software discrimination, learning on knowledge graphs and security). Our evaluation shows that in addition to its generality, MLCHECK can outperform specialised testing approaches while having a comparable runtime. Arnab Sharma, Caglar Demir, Axel-Cyrille Ngonga Ngomo, Heike Wehrheim |
ICMLA | 4 |
| 2021 | On the Correctness Problem for Serializability
Jürgen König, Heike Wehrheim |
ICTAC | 2 |
| 2021 | Jicer: Simplifying Cooperative Android App Analysis TasksabstractSlicing is an established technique for program inspection employed in use cases such as debugging, analysis, understanding and restructuring. Slicing techniques compute program parts which affect (or are affected by) certain slicing criteria. Slicing tools are most often specialized to a language and an application use case.In this paper, we present the tool Jicer, the only functional and available static slicer for Android apps. Jicer is a multi-purpose app slicer, configurable to different use cases by its ability to generate debuggable as well as analyzable and executable output. In its core, Jicer is a slicer for Java bytecode, tailored towards Android app specifics like the lack of a main method, extensive use of callbacks and inter-component communication.Jicer in particular supports security (data leak) analysis of Android apps through an interface allowing Jicer to work as one tool in a cooperative analysis. The role of Jicer in cooperative analyses is twofold: Jicer acts as an aid for other tools (via the reduction of the app size) and Jicer benefits from other tools (via the usage of analysis information in Jicer’s app dependence graph). The evaluation shows that Jicer is able to slice real-world apps thereby reducing app size about most ~55 to And importantly in a cooperative ~96%. analysis Jicer can increase the overall precision by significantly reducing the large number of false positives. Felix Pauck, Heike Wehrheim |
SCAM | 2 |
| 2021 | Brief Announcement: On Strong Observational Refinement and Forward Simulation
John Derrick, Simon Doherty, Brijesh Dongol, Gerhard Schellhorn, Heike Wehrheim |
DISC | 5 |
| 2021 | EditorialabstractNo abstract available. Wolfgang Ahrendt, Silvia Lizeth Tapia Tarifa, Heike Wehrheim |
Formal Aspects Comput. | 3 |
| 2021 | EditorialabstractNo abstract available. Jordi Cabot, Heike Wehrheim, Eerke A. Boiten |
Formal Aspects Comput. | 2 |
| 2021 | Verifying correctness of persistent concurrent data structures: a sound and complete methodabstractAbstract Non-volatile memory (NVM), aka persistent memory, is a new memory paradigm that preserves its contents even after power loss. The expected ubiquity of NVM has stimulated interest in the design of persistent concurrent data structures, together with associated notions of correctness. In this paper, we present a formal proof technique for durable linearizability , which is a correctness criterion that extends linearizability to handle crashes and recovery in the context ofNVM.Our proofs are based on refinement of Input/Output automata (IOA) representations of concurrent data structures. To this end, we develop a generic procedure for transforming any standard sequential data structure into a durable specification and prove that this transformation is both sound and complete. Since the durable specification only exhibits durably linearizable behaviours, it serves as the abstract specification in our refinement proof. We exemplify our technique on a recently proposed persistentmemory queue that builds on Michael and Scott’s lock-free queue. To support the proofs, we describe an automated translation procedure from code to IOA and a thread-local proof technique for verifying correctness of invariants. John Derrick, Simon Doherty, Brijesh Dongol, Gerhard Schellhorn, Heike Wehrheim |
Formal Aspects Comput. | 5 |
| 2020 | Owicki-Gries Reasoning for C11 RARabstractOwicki-Gries reasoning for concurrent programs uses Hoare logic together with an interference freedom rule for concurrency. In this paper, we develop a new proof calculus for the C11 RAR memory model (a fragment of C11 with both relaxed and release-acquire accesses) that allows all Owicki-Gries proof rules for compound statements, including non-interference, to remain unchanged. Our proof method features novel assertions specifying thread-specific views on the state of programs. This is combined with a set of Hoare logic rules that describe how these assertions are affected by atomic program steps. We demonstrate the utility of our proof calculus by verifying a number of standard C11 litmus tests and Peterson’s algorithm adapted for C11. Our proof calculus and its application to program verification have been fully mechanised in the theorem prover Isabelle. Mohammadsadegh Dalvandi, Simon Doherty, Brijesh Dongol, Heike Wehrheim |
ECOOP | 4 |
| 2020 | Defining and Verifying Durable Opacity: Correctness for Persistent Software Transactional Memory
Eleni Bila, Simon Doherty, Brijesh Dongol, John Derrick, Gerhard Schellhorn, Heike Wehrheim |
FORTE | 6 |
| 2020 | Consistency Analysis of AUTOSAR Timing Requirements
Steffen Beringer, Heike Wehrheim |
ICSOFT | 2 |
| 2020 | Verification Artifacts in Cooperative Verification: Survey and Unifying Component FrameworkabstractAbstract The goal ofcooperativeverification is to combine verification approaches in such a way that they work together to verify a system model. In particular, cooperative verifiersprovideexchangeable information (verification artifacts)toother verifiers orconsumesuch informationfromother verifiers with the goal of increasing the overall effectiveness and efficiency of the verification process. This paper first gives an overview over approaches for leveraging strengths of different techniques, algorithms, and tools in order to increase the power and abilities of the state of the art in software verification. To limit the scope, we restrict our overview to tools and approaches for automatic program analysis. Second, we specifically outline cooperative verification approaches and discuss their employed verification artifacts. Third, we formalize all artifacts in a uniform way, thereby fixing their semantics and providing verifiers with a precise meaning of the exchanged information. Dirk Beyer 0001, Heike Wehrheim |
ISoLA (1) | 2 |
| 2020 | Higher income, larger loan? monotonicity testing of machine learning modelsabstractToday, machine learning (ML) models are increasingly applied in decision making. This induces an urgent need for quality assurance of ML models with respect to (often domain-dependent) requirements. Monotonicity is one such requirement. It specifies a software as ''learned'' by an ML algorithm to give an increasing prediction with the increase of some attribute values. While there exist multiple ML algorithms for ensuring monotonicity of the generated model, approaches for checking monotonicity, in particular of black-box models are largely lacking. Arnab Sharma, Heike Wehrheim |
ISSTA | 2 |
| 2020 | Attend and Represent: A Novel View on Algorithm Selection for Software VerificationabstractToday, a plethora of different software verification tools exist. When having a concrete verification task at hand, software developers thus face the problem of algorithm selection. Existing algorithm selectors for software verification typically use handpicked program features together with (1) either manually designed selection heuristics or (2) machine learned strategies. While the first approach suffers from not being transferable to other selection problems, the second approach lacks interpretability, i.e., insights into reasons for choosing particular tools. Cedric Richter, Heike Wehrheim |
ASE | 2 |
| 2020 | Automatic Fairness Testing of Machine Learning Models
Arnab Sharma, Heike Wehrheim |
ICTSS | 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. | 4 |
| 2019 | Verifying Correctness of Persistent Concurrent Data Structures
John Derrick, Simon Doherty, Brijesh Dongol, Gerhard Schellhorn, Heike Wehrheim |
FM | 5 |
| 2019 | Testing Machine Learning Algorithms for Balanced Data UsageabstractWith the increased application of machine learning (ML) algorithms to decision-making processes, the question of fairness of such algorithms came into the focus. Fairness testing aims at checking whether a classifier as "learned" by an ML algorithm on some training data is biased in the sense of discriminating against some of the attributes (e.g. gender or age). Fairness testing thus targets the prediction phase in ML, not the learning phase. In this paper, we investigate fairness for the learning phase. Our definition of fairness is based on the idea that the learner should treat all data in the training set equally, disregarding issues like names or orderings of features or orderings of data instances. We term this property balanced data usage. We consequently develop a (metamorphic) testing approach called TiLe for checking balanced data usage. TiLe is applied on 14 ML classifiers taken from the scikit-learn library using 4 artificial and 9 real-world data sets for training, finding 12 of the classifiers to be unbalanced. Arnab Sharma, Heike Wehrheim |
ICST | 2 |
| 2019 | Specifying and Analyzing Virtual Network Services Using Queuing Petri Nets
Stefan Schneider 0008, Arnab Sharma, Holger Karl, Heike Wehrheim |
IM | 4 |
| 2019 | Verifying C11 programs operationallyabstractThis paper develops an operational semantics for a release-acquire fragment of the C11 memory model with relaxed accesses. We show that the semantics is both sound and complete with respect to the axiomatic model of Batty et al. The semantics relies on a per-thread notion of observability, which allows one to reason about a weak memory C11 program in program order. On top of this, we develop a proof calculus for invariant-based reasoning, which we use to verify the release-acquire version of Peterson's mutual exclusion algorithm. Simon Doherty, Brijesh Dongol, Heike Wehrheim, John Derrick |
PPoPP | 3 |
| 2019 | Together strong: cooperative Android app analysisabstractRecent years have seen the development of numerous tools for the analysis of taint flows in Android apps. Taint analyses aim at detecting data leaks, accidentally or by purpose programmed into apps. Often, such tools specialize in the treatment of specific features impeding precise taint analysis (like reflection or inter-app communication). This multitude of tools, their specific applicability and their various combination options complicate the selection of a tool (or multiple tools) when faced with an analysis instance, even for knowledgeable users, and hence hinders the successful adoption of taint analyses. Felix Pauck, Heike Wehrheim |
ESEC/SIGSOFT FSE | 2 |
| 2019 | PeSCo: Predicting Sequential Combinations of Verifiers - (Competition Contribution)abstractPeSCo is a tool for predicting a (likely best) sequential combination of verifiers on a given verification task and then running it. The approach is based on machine learning, more precisely on learning rankings of verifiers on verification tasks (where the ordering of verifiers is based on the SV-COMP scoring schema). The learning part employs Support Vector Machines; as base verifiers we use CPAchecker in 6 different configurations. Cedric Richter, Heike Wehrheim |
TACAS (3) | 2 |
| 2019 | EditorialabstractNo abstract available. Martin Fränzle, Deepak Kapur, Heike Wehrheim, Naijun Zhan |
Formal Aspects Comput. | 3 |
| 2019 | Editorial
Alessandra Russo, Andy Schürr, Heike Wehrheim |
Formal Aspects Comput. | 3 |
| 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 | 4 |
| 2018 | Information Flow Certificates
Manuel Töws, Heike Wehrheim |
ICTAC | 2 |
| 2018 | Making Linearizability Compositional for Partially Ordered Executions
Simon Doherty, Brijesh Dongol, Heike Wehrheim, John Derrick |
IFM | 3 |
| 2018 | JMCTest: Automatically Testing Inter-Method Contracts in Java
Paul Börding, Jan Haltermann, Marie-Christine Jakobs, Heike Wehrheim |
ICTSS | 4 |
| 2018 | FastLane Is Opaque - a Case Study in Mechanized Proofs of Opacity
Gerhard Schellhorn, Monika Wedel, Oleg Travkin 0001, Jürgen König, Heike Wehrheim |
SEFM | 5 |
| 2018 | Do Android taint analysis tools keep their promises?abstractIn recent years, researchers have developed a number of tools to conduct taint analysis of Android applications. While all the respective papers aim at providing a thorough empirical evaluation, comparability is hindered by varying or unclear evaluation targets. Sometimes, the apps used for evaluation are not precisely described. In other cases, authors use an established benchmark but cover it only partially. In yet other cases, the evaluations differ in terms of the data leaks searched for, or lack a ground truth to compare against. All those limitations make it impossible to truly compare the tools based on those published evaluations. Felix Pauck, Eric Bodden, Heike Wehrheim |
ESEC/SIGSOFT FSE | 3 |
| 2018 | Brief Announcement: Generalising Concurrent Correctness to Weak MemoryabstractCorrectness conditions like linearizability and opacity describe some form of atomicity imposed on concurrent objects. In this paper, we propose a correctness condition (called causal atomicity) for concurrent objects executing in a weak memory model, where the histories of the objects in question are partially ordered. We establish compositionality and abstraction results for causal atomicity and develop an associated refinement-based proof technique. Simon Doherty, Brijesh Dongol, Heike Wehrheim, John Derrick |
DISC | 3 |
| 2018 | Mechanized proofs of opacity: a comparison of two techniquesabstractAbstract Software transactional memory (STM) provides programmers with a high-level programming abstraction for synchronization of parallel processes, allowing blocks of codes that execute in an interleaved manner to be treated as atomic blocks. This atomicity property is captured by a correctness criterion called opacity , which relates the behaviour of an STM implementation to those of a sequential atomic specification. In this paper, we prove opacity of a recently proposed STM implementation: the Transactional Mutex Lock (TML) by Dalessandro et al. For this, we employ two different methods: the first method directly shows all histories of TML to be opaque (proof by induction), using a linearizability proof of TML as an assistance; the second method shows TML to be a refinement of an existing intermediate specification called TMS2 which is known to be opaque (proof by simulation). Both proofs are carried out within interactive provers, the first with KIV and the second with both Isabelle and KIV. This allows to compare not only the proof techniques in principle, but also their complexity in mechanization. It turns out that the second method, already leveraging an existing proof of opacity of TMS2, allows the proof to be decomposed into two independent proofs in the way that the linearizability proof does not. John Derrick, Simon Doherty, Brijesh Dongol, Gerhard Schellhorn, Oleg Travkin 0001, Heike Wehrheim |
Formal Aspects Comput. | 6 |
| 2017 | Policy Dependent and Independent Information Flow Analyses
Manuel Töws, Heike Wehrheim |
ICFEM | 2 |
| 2017 | Value-Based or Conflict-Based? Opacity Definitions for STMs
Jürgen König, Heike Wehrheim |
ICTAC | 2 |
| 2017 | Proof-Carrying Hardware via Inductive InvariantsabstractProof-carrying hardware (PCH) is a principle for achieving safety for dynamically reconfigurable hardware systems. The producer of a hardware module spends huge effort when creating a proof for a safety policy. The proof is then transferred as a certificate together with the configuration bitstream to the consumer of the hardware module, who can quickly verify the given proof. Previous work utilized SAT solvers and resolution traces to set up a PCH technology and corresponding tool flows. In this article, we present a novel technology for PCH based on inductive invariants. For sequential circuits, our approach is fundamentally stronger than the previous SAT-based one since we avoid the limitations of bounded unrolling. We contrast our technology to existing ones and show that it fits into previously proposed tool flows. We conduct experiments with four categories of benchmark circuits and report consumer and producer runtime and peak memory consumption, as well as the size of the certificates and the distribution of the workload between producer and consumer. Experiments clearly show that our new induction-based technology is superior for sequential circuits, whereas the previous SAT-based technology is the better choice for combinational circuits. Tobias Isenberg 0002, Marco Platzner, Heike Wehrheim, Tobias Wiersema |
ACM Trans. Design Autom. Electr. Syst. | 3 |
| 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. | 2 |
| 2016 | A CEGAR Scheme for Information Flow Analysis
Manuel Töws, Heike Wehrheim |
ICFEM | 2 |
| 2016 | Verification of Concurrent Programs on Weak Memory Models
Oleg Travkin 0001, Heike Wehrheim |
ICTAC | 2 |
| 2016 | Towards a Thread-Local Proof Technique for Starvation Freedom
Gerhard Schellhorn, Oleg Travkin 0001, Heike Wehrheim |
IFM | 3 |
| 2016 | Proving Opacity of a Pessimistic STMabstractTransactional Memory (TM) is a high-level programming abstraction for concurrency control that provides programmers with the illusion of atomically executing blocks of code, called transactions. TMs come in two categories, optimistic and pessimistic, where in the latter transactions never abort. While this simplifies the programming model, high-performing pessimistic TMs can be complex. In this paper, we present the first formal verification of a pessimistic software TM algorithm, namely, an algorithm proposed by Matveev and Shavit. The correctness criterion used is opacity, formalising the transactional atomicity guarantees. We prove that this pessimistic TM is a refinement of an intermediate opaque I/O-automaton, known as TMS2. To this end, we develop a rely-guarantee approach for reducing the complexity of the proof. Proofs are mechanised in the interactive prover Isabelle. Simon Doherty, Brijesh Dongol, John Derrick, Gerhard Schellhorn, Heike Wehrheim |
OPODIS | 5 |
| 2016 | On-the-fly construction of provably correct service compositions - templates and proofs
Sven Walther, Heike Wehrheim |
Sci. Comput. Program. | 2 |
| 2015 | Just Test What You Cannot Verify!
Mike Czech, Marie-Christine Jakobs, Heike Wehrheim |
FASE | 3 |
| 2015 | Verifying Opacity of a Transactional Mutex Lock
John Derrick, Brijesh Dongol, Gerhard Schellhorn, Oleg Travkin 0001, Heike Wehrheim |
FM | 5 |
| 2015 | Grammar-based model transformations: Definition, execution, and quality properties
Galina Besova, Dominik Steenken, Heike Wehrheim |
Comput. Lang. Syst. Struct. | 3 |
| 2014 | Grammar-Based Model TransformationsabstractModel transformation is a key concept in modeldriven software engineering.The definition of model transformations is usually based on meta-models describing the abstract syntax of languages.While meta-models are thereby able to abstract from superfluous details of concrete syntax, they often loose structural information inherent in languages, like information on model elements always occurring together in particular shapes.As a consequence, model transformations cannot naturally re-use language structures, thus leading to unnecessary complexity in their development as well as analysis.In this paper, we propose a new approach to model transformation development which allows to simplify and improve the quality of the developed transformations via the exploitation of the languages' structures.The approach is based on context-free grammars and transformations defined by pairing productions of source and target grammars.We show that such transformations exhibit three important characteristics: they are sound, complete and deterministic. Galina Besova, Dominik Steenken, Heike Wehrheim |
FedCSIS | 3 |
| 2014 | Quiescent Consistency: Defining and Verifying Relaxed Linearizability
John Derrick, Brijesh Dongol, Gerhard Schellhorn, Bogdan Tofan, Oleg Travkin 0001, Heike Wehrheim |
FM | 6 |
| 2014 | Timed Automata Verification via IC3 with Zones
Tobias Isenberg 0002, Heike Wehrheim |
ICFEM | 2 |
| 2014 | Integrating Software and Hardware Verification
Marie-Christine Jakobs, Marco Platzner, Heike Wehrheim, Tobias Wiersema |
IFM | 3 |
| 2014 | Managing LTL Properties in Event-B Refinement
Steve A. Schneider, Helen Treharne, Heike Wehrheim, David M. Williams |
IFM | 3 |
| 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 | 2 |
| 2014 | The behavioural semantics of Event-B refinementabstractAbstract Event-B provides a flexible framework for stepwise system development via refinement. The framework supports steps for (a) refining events (one-by-one), (b) splitting events (one-by-many), and (c) introducing new events. In each of the steps events can be indicated as convergent (to be made internal) or anticipated (treatment deferred to a later refinement step). All such steps are accompanied with precise proof obligations. However, no behavioural semantics has been provided to validate the proof obligations, and no formal justification has previously been given for the application of these rules in a refinement chain. Behavioural semantics expresses a clear relationship between the first and last machines in a refinement chain. The framework we present provides a coherent justification for Abrial’s approach to refinement in Event-B, and its generalisation to interface extension: adding events to the interface. In this paper, we give a behavioural semantics for Event-B refinement, with a treatment for the first time of splitting events and of anticipated events, adding to the well-understood treatment of convergent events. To this end, we define a CSP semantics for Event-B and show how the different forms of Event-B refinement can be captured as CSP refinement. It turns out that the appropriate CSP refinement relationship is influenced by the particular Event-B development strategy taken. We present two such strategies, one allowing, the other disallowing interface extensions. Steve A. Schneider, Helen Treharne, Heike Wehrheim |
Formal Aspects Comput. | 3 |
| 2014 | Two approaches for proving linearizability of multiset
Bogdan Tofan, Oleg Travkin 0001, Gerhard Schellhorn, Heike Wehrheim |
Sci. Comput. Program. | 4 |
| 2014 | A Sound and Complete Proof Technique for Linearizability of Concurrent Data StructuresabstractEfficient implementations of data structures such as queues, stacks or hash-tables allow for concurrent access by many processes at the same time. To increase concurrency, these algorithms often completely dispose with locking, or only lock small parts of the structure. Linearizability is the standard correctness criterion for such a scenario—where a concurrent object is linearizable if all of its operations appear to take effect instantaneously some time between their invocation and return. The potential concurrent access to the shared data structure tremendously increases the complexity of the verification problem, and thus current proof techniques for showing linearizability are all tailored to specific types of data structures. In previous work, we have shown how simulation-based proof conditions for linearizability can be used to verify a number of subtle concurrent algorithms. In this article, we now show that conditions based on backward simulation can be used to show linearizability of every linearizable algorithm, that is, we show that our proof technique is both sound and complete. We exemplify our approach by a linearizability proof of a concurrent queue, introduced in Herlihy and Wing's landmark paper on linearizability. Except for their manual proof, none of the numerous other approaches have successfully treated this queue. Our approach is supported by a full mechanisation: both the linearizability proofs for case studies like the queue, and the proofs of soundness and completeness have been carried out with an interactive prover, which is KIV. Gerhard Schellhorn, John Derrick, Heike Wehrheim |
ACM Trans. Comput. Log. | 3 |
| 2013 | Programs from Proofs - A PCC Alternative
Daniel Wonisch, Alexander Schremmer, Heike Wehrheim |
CAV | 3 |
| 2013 | Knowledge-Based Verification of Service Compositions - An SMT ApproachabstractIn the Semantic (Web) Services area, services are considered black boxes with a semantic description of their interfaces as to allow for precise service selection and configuration. The semantic description is usually grounded on domain-specific concepts as modeled in ontologies. This accounts to types used in service signatures, but also to predicates occurring in preconditions and effects of services. Ontologies, in particular those enhanced with rules, capture the knowledge of domain experts on properties of and relations between domain concepts. In this paper, we present a verification technique for service compositions which makes use of this domain knowledge. We consider a service composition to be an assembly of services of which we just know signatures, preconditions, and effects. We aim at proving that a composition satisfies a (user-defined) requirement, specified in terms of guaranteed preconditions and required postconditions. As an underlying verification engine we use an SMT solver. To take advantage of the domain knowledge (and often, to enable verification at all), the knowledge is fed into the solver in the form of sorts, uninterpreted functions and in particular assertions as to enhance the solver's reasoning capabilities. Thereby, we allow for deductions within a domain previously unknown to the solver. We exemplify our technique on a case study from the area of water network optimization software. Sven Walther, Heike Wehrheim |
ICECCS | 2 |
| 2013 | A High-Level Semantics for Program Execution under Total Store Order Memory
Brijesh Dongol, Oleg Travkin 0001, John Derrick, Heike Wehrheim |
ICTAC | 4 |
| 2013 | Zero Overhead Runtime Monitoring
Daniel Wonisch, Alexander Schremmer, Heike Wehrheim |
SEFM | 3 |
| 2012 | How to Prove Algorithms Linearisable
Gerhard Schellhorn, Heike Wehrheim, John Derrick |
CAV | 2 |
| 2012 | Heuristic-Guided Abstraction Refinement for Concurrent Systems
Nils Timm, Heike Wehrheim, Mike Czech |
ICFEM | 2 |
| 2012 | Predicate Analysis with Block-Abstraction Memoization
Daniel Wonisch, Heike Wehrheim |
ICFEM | 2 |
| 2012 | Weaving-Based Configuration and Modular Transformation of Multi-layer Systems
Galina Besova, Sven Walther, Heike Wehrheim, Steffen Becker 0001 |
MoDELS | 3 |
| 2012 | Model evolution and refinement
Thomas Ruhroth, Heike Wehrheim |
Sci. Comput. Program. | 2 |
| 2011 | Verifying Linearisability with Potential Linearisation Points
John Derrick, Gerhard Schellhorn, Heike Wehrheim |
FM | 3 |
| 2011 | Selected papers on Integrated Formal Methods (iFM09)
Michael Leuschel, Heike Wehrheim |
Sci. Comput. Program. | 2 |
| 2011 | Mechanically verified proof obligations for linearizabilityabstractConcurrent objects are inherently complex to verify. In the late 80s and early 90s, Herlihy and Wing proposed linearizability as a correctness condition for concurrent objects, which, once proven, allows us to reason about concurrent objects using pre- and postconditions only. A concurrent object is linearizable if all of its operations appear to take effect instantaneously some time between their invocation and return. In this article we define simulation-based proof conditions for linearizability and apply them to two concurrent implementations, a lock-free stack and a set with lock-coupling. Similar to other approaches, we employ a theorem prover (here, KIV) to mechanize our proofs. Contrary to other approaches, we also use the prover to mechanically check that our proof obligations actually guarantee linearizability. This check employs the original ideas of Herlihy and Wing of verifying linearizability via possibilities . John Derrick, Gerhard Schellhorn, Heike Wehrheim |
ACM Trans. Program. Lang. Syst. | 3 |
| 2010 | On Symmetries and Spotlights - Verifying Parameterised Systems
Nils Timm, Heike Wehrheim |
ICFEM | 2 |
| 2010 | Showing Full Semantics Preservation in Model Transformation - A Comparison of Techniques
Mathias Hülsbusch, Barbara König 0001, Arend Rensink, Maria Semenyak, Christian Soltenborn, Heike Wehrheim |
IFM | 6 |
| 2010 | A CSP Approach to Control in Event-B
Steve A. Schneider, Helen Treharne, Heike Wehrheim |
IFM | 3 |
| 2010 | SLAB: A Certifying Model Checker for Infinite-State Concurrent Systems
Klaus Dräger, Andrey Kupriyanov, Bernd Finkbeiner, Heike Wehrheim |
TACAS | 4 |
| 2010 | Model transformations across views
John Derrick, Heike Wehrheim |
Sci. Comput. Program. | 2 |
| 2009 | Three-Valued Spotlight Abstractions
Jonas Schrieb, Heike Wehrheim, Daniel Wonisch |
FM | 2 |
| 2009 | Refinement-Preserving Co-evolution
Thomas Ruhroth, Heike Wehrheim |
ICFEM | 2 |
| 2008 | Decomposition for Compositional Verification
Björn Metzler 0001, Heike Wehrheim, Daniel Wonisch |
ICFEM | 2 |
| 2008 | Bounded Model Checking for Partial Kripke Structures
Heike Wehrheim |
ICTAC | 1 |
| 2008 | Integrating a formal method into a software engineering process with UML and JavaabstractAbstract We describe how CSP-OZ, a formal method combining the process algebra CSP with the specification language Object-Z, can be integrated into an object-oriented software engineering process employing the UML as a modelling and Java as an implementation language. The benefit of this integration lies in the rigour of the formal method, which improves the precision of the constructed models and opens up the possibility of (1) verifying properties of models in the early design phases, and (2) checking adherence of implementations to models. The envisaged application area of our approach is the design of distributed reactive systems . To this end, we propose a specific UML profile for reactive systems. The profile contains facilities for modelling components, their interfaces and interconnections via synchronous/broadcast communication, and the overall architecture of a system. The integration with the formal method proceeds by generating a significant part of the CSP-OZ specification from the initially developed UML model. The formal specification is on the one hand the starting point for verifying properties of the model, for instance by using the FDR model checker. On the other hand, it is the basis for generating contracts for the final implementation. Contracts are written in the Java Modeling Language (JML) complemented by CSP jassda , an assertion language for specifying orderings between method invocations. A set of tools for runtime checking can be used to supervise the adherence of the final Java implementation to the generated contracts. Michael Möller 0002, Ernst-Rüdiger Olderog, Holger Rasch, Heike Wehrheim |
Formal Aspects Comput. | 4 |
| 2008 | Slicing Abstractions
Ingo Brückner, Klaus Dräger, Bernd Finkbeiner, Heike Wehrheim |
Fundam. Informaticae | 4 |
| 2007 | Proving Linearizability Via Non-atomic Refinement
John Derrick, Gerhard Schellhorn, Heike Wehrheim |
IFM | 3 |
| 2007 | On using data abstractions for model checking refinements
John Derrick, Heike Wehrheim |
Acta Informatica | 2 |
| 2006 | Incremental Slicing
Heike Wehrheim |
ICFEM | 1 |
| 2005 | Slicing an Integrated Formal Method for Verification
Ingo Brückner, Heike Wehrheim |
ICFEM | 2 |
| 2005 | Specification and (property) inheritance in CSP-OZ
Ernst-Rüdiger Olderog, Heike Wehrheim |
Sci. Comput. Program. | 2 |
| 2005 | Slicing techniques for verification re-use
Heike Wehrheim |
Theor. Comput. Sci. | 1 |
| 2004 | Linking CSP-OZ with UML and Java: A Case Study
Michael Möller 0002, Ernst-Rüdiger Olderog, Holger Rasch, Heike Wehrheim |
IFM | 4 |
| 2003 | Behavioral Subtyping Relations for Active Objects
Heike Wehrheim |
Formal Methods Syst. Des. | 1 |
| 2001 | A CSP View on UML-RT Structure Diagrams
Clemens Fischer, Ernst-Rüdiger Olderog, Heike Wehrheim |
FASE | 3 |
| 2001 | Patterns and Rules for Behavioural Subtyping
Heike Wehrheim |
FORTE | 1 |
| 2001 | Process algebra with action dependencies
Arend Rensink, Heike Wehrheim |
Acta Informatica | 2 |
| 2000 | Specification of an Automatic Manufacturing System: A Case Study in Using Integrated Formal Methods
Heike Wehrheim |
FASE | 1 |
| 2000 | Data Abstraction Techniques in the Validation of CSP-OZ SpecificationsabstractAbstract. CSP-OZ is an integrated formal method which combines the state-oriented specification language Object-Z with the process algebra CSP, thereby allowing a description of static as well as dynamic aspects of a system. Checking correctness of CSP-OZ specifications can be done via a translation into (FDR-)CSP, on which automatic verification can be performed with the FDR model checker if the state space of the resulting CSP process is not too large to be processed. This paper investigates how data abstraction techniques can be used to bring a translated specification within range of automatic verification. Heike Wehrheim |
Formal Aspects Comput. | 1 |
| 1999 | Model-Checking CSP-OZ Specifications with FDR
Clemens Fischer, Heike Wehrheim |
IFM | 2 |
| 1998 | An Algebraic Semantics for Message Sequence Chart Documents
Thomas Gehrke, Michaela Huhn, Arend Rensink, Heike Wehrheim |
FORTE | 4 |
| 1998 | Partial Order Reductions for Bisimulation Checking
Michaela Huhn, Peter Niebert, Heike Wehrheim |
FSTTCS | 3 |
| 1997 | Dependency-Based Action Refinement
Arend Rensink, Heike Wehrheim |
MFCS | 2 |
| 1996 | Causal Testing
Ursula Goltz, Heike Wehrheim |
MFCS | 2 |
| 1996 | Modelling Causality via Action Dependencies in Branching Time Semantics
Ursula Goltz, Heike Wehrheim |
Inf. Process. Lett. | 2 |
| 1994 | Weak Sequential Composition in Process Algebras
Arend Rensink, Heike Wehrheim |
CONCUR | 2 |