Peter Schrammel

dblp:23/8898 · DBLP profile ↗
← Back
41ranked-venue papers
12as first author
6since 2021 · last 2026
0000-0002-5713-1381ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 35 · 8 first-author · 5 since 2021Theory of computation · 7 · 5 first-authorSystems, architecture and hardware · 3Artificial intelligence and machine learning · 1 · 1 since 2021Applied, interdisciplinary, general and emerging computing · 1 · 1 first-author
YearPublicationVenuePosition
2026 Iekkë: A SAT-Based Bounded-Round Verifier for Multi-Threaded Programs (Competition Contribution)
Paolo Di Biase, Bernd Fischer 0002, Salvatore La Torre, Peter Schrammel, Gennaro Parlato
TACAS (2)4
2024 JCWIT: A Correctness-Witness Validator for Java Programs Based on Bounded Model Checking
abstract
Witness validation is a formal verification method to independently verify software verification tool results, with two main categories: violation and correctness witness validators. Validators for violation witnesses in Java include Wit4Java and GWIT, but no dedicated correctness witness validators exist. To address this gap, this paper presents the Java Correctness-Witness Validator (JCWIT), the first tool to validate correctness witnesses in Java programs. JCWIT accepts an original program, a specification, and a correctness witness as inputs. Then, it uses invariants of each witness’s execution state as conditions to be incorporated into the original program in the form of assertions, thus instrumenting it. Next, JCWIT employs an established tool, Java Bounded Model Checker (JBMC), to verify the transformed program, hence examining the reproducibility of correct witness results. We evaluated JCWIT in the SV-COMP ReachSafety benchmark, and the results show that JCWIT can correctly validate the correctness witnesses generated by Java verifiers.
Zaiyu Cheng, Tong Wu 0028, Peter Schrammel, Norbert Tihanyi, Eddie Batista de Lima Filho, Lucas C. Cordeiro
ISSTA3
2023 2LS: Arrays and Loop Unwinding - (Competition Contribution)
abstract
Abstract 2LS is a C program analyser built upon the CPROVER infrastructure that can verify and refute program assertions, memory safety, and termination. Until now, one of the main drawbacks of 2LS was its inability to verify most programs with arrays. This paper introduces a new abstract domain in 2LS for reasoning about the contents of arrays. In addition, we introduce an improved approach to loop unwinding, a crucial component of the 2LS’ verification algorithm, which particularly enables finding proofs and counterexamples for programs working with dynamic memory.
Viktor Malík, Frantisek Necas, Peter Schrammel, Tomás Vojnar
TACAS (2)3
2022 CBMC-SSM: Bounded Model Checking of C Programs with Symbolic Shadow Memory
abstract
Dynamic program analysis tools such as Eraser, TaintCheck, or ThreadSanitizer abstract the contents of individual memory locations and store the abstraction results in a separate data structure called shadow memory. They then use this meta-information to efficiently implement the actual analyses. In this paper, we describe the implementation of an efficient symbolic shadow memory extension for the CBMC bounded model checker that can be accessed through an API, and sketch its use in the design of a new data race analyzer that is implemented by a code-to-code translation.
Bernd Fischer 0002, Salvatore La Torre, Gennaro Parlato, Peter Schrammel
ASE4
2022 Wit4Java: A Violation-Witness Validator for Java Verifiers (Competition Contribution)
abstract
Abstract We describe and evaluate a violation-witness validator for Java verifiers called Wit4Java. It takes a Java program with a safety property and the respective violation-witness output by a Java verifier to generate a new Java program whose execution deterministically violates the property. We extract the value of the program variables from the counterexample represented by the violation-witness and feed this information back into the original program. In addition, we have two implementations for instantiating source programs by injecting counterexamples. Experimental results show that Wit4Java can correctly validate the violation-witnesses produced by JBMC and GDart in a few seconds.
Tong Wu 0028, Peter Schrammel, Lucas C. Cordeiro
TACAS (2)2
2021 Unbounded-Time Safety Verification of Guarded LTI Models with Inputs by Abstract Acceleration
abstract
Reachability analysis of dynamical models is a relevant problem that has seen much progress in the last decades, however with clear limitations pertaining to the nature of the dynamics and the soundness of the results. This article focuses on sound safety verification of unbounded-time (infinite-horizon) linear time-invariant (LTI) models with inputs using reachability analysis. We achieve this using counterexample-guided Abstract Acceleration: this approach over-approximates the reachability tube of the LTI model over an unbounded time horizon by using abstraction, possibly finding concrete counterexamples for refinement based on the given safety specification. The technique is applied to a number of LTI models and the results show robust performance when compared to state-of-the-art tools.
Dario Cattaruzza, Alessandro Abate, Peter Schrammel, Daniel Kroening
J. Autom. Reason.3
2020 The FMCAD 2020 Student Forum
abstract
The Student Forum at the International Conference on Formal Methods in Computer-Aided Design (FMCAD) allows undergraduate and graduate students to introduce their research to the Formal Methods community and receive feedback.Originally planned to take place in Haifa, Israel, the event was actually run online via video conferencing.Eight students were invited to give a short talk and discuss their work with their peers and FMCAD attendees.The presentations covered a broad range of topics in the fields of verification and synthesis in various application areas.The Student Forum gives an opportunity to students at any career stage to introduce their research to the audience of the FMCAD conference.The first edition took place in Portland, Oregon, USA in 2013 [6], with subsequent editions held in Lausanne, Switzerland in 2014 [5], Austin, Texas, USA in 2015 [7] and 2018 [4], Mountain View, CA, USA in 2016 [3], Vienna, Austria in 2017 [2], and San Jose, CA, USA in 2019 [1].As in 2019, the 2020 Student Forum was open to graduate and undergraduate students.1 The students were invited to submit 2-page reports describing their ongoing research in the scope of the FMCAD conference.Members of the program committee of FMCAD reviewed the reports and accepted eight submissions.The reviews evaluated the novelty of the work, its potential impact on the Formal Methods community, the quality and the soundness of the presentation.The contributions covered a wide range of topics, from foundational aspects of automated reasoning to applications of Formal Methods to cloud security, neural networks and medicine.The following contributions have been accepted
Peter Schrammel
FMCAD1
2020 How testable is business software?
abstract
Most businesses rely on a significant stack of software to perform their daily operations. This software is business-critical as defects in this software have major impacts on revenue and customer satisfaction. The primary means for verification of this software is testing. We conducted a large-scale analysis of Java software packages to evaluate their testability. The results show that code in software repositories is typically split into portions of very trivial code, non-trivial code that is unit-testable, and code that cannot be unit-tested easily. This brings up interesting considerations regarding the use of test coverage metrics and design for testability, which is crucial for testing efficiency and effectiveness, but unfortunately too often an afterthought. Lack of testability is an obstacle to applying tools that perform automated verification and test generation. These tools cannot make up for poor testability of the code and have a hard time in succeeding or are not even applicable without first improving the design of the software system.
Peter Schrammel
FMCAD1
2020 2LS: Heap Analysis and Memory Safety - (Competition Contribution)
abstract
Abstract 2LS is a framework for analysis of sequential C programs based on the CPROVER infrastructure and template-based synthesis techniques for checking both safety and termination. The paper presents the main improvements done in 2LS since 2018, which concern mainly the way 2LS handles dynamically allocated objects and structures as well as combinations of abstract domains.
Viktor Malík, Peter Schrammel, Tomás Vojnar
TACAS (2)2
2019 JBMC: Bounded Model Checking for Java Bytecode - (Competition Contribution)
abstract
JBMC is a bounded model checking tool for verifying Java bytecode. It is built on top of the CPROVER framework. JBMC processes Java bytecode together with a model of the standard Java libraries. It checks a set of desired properties, such as assertions and absence of uncaught exceptions, under given bounds on loops, recursion and data structures. Internally, it uses the same bounded model checking engine as its sibling tool CBMC and discharges the generated verification conditions with the help of MiniSAT 2.2.1.
Lucas C. Cordeiro, Daniel Kroening, Peter Schrammel
TACAS (3)3
2018 JBMC: A Bounded Model Checking Tool for Verifying Java Bytecode
abstract
We present a bounded model checking tool for verifying Java bytecode, which is built on top of the CPROVER framework, named Java Bounded Model Checker (JBMC). JBMC processes Java bytecode together with a model of the standard Java libraries and checks a set of desired properties. Experimental results show that JBMC can correctly verify a set of Java benchmarks from the literature and that it is competitive with two state-of-the-art Java verifiers. These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
Lucas C. Cordeiro, Pascal Kesseli, Daniel Kroening, Peter Schrammel, Marek Trtík
CAV (1)4
2018 Template-Based Verification of Heap-Manipulating Programs
abstract
We propose a shape analysis suitable for analysis engines that perform automatic invariant inference using an SMT solver. The proposed solution includes an abstract template domain that encodes the shape of the program heap based on logical formulae over bit-vectors. It is based on computing a points-to relation between pointers and symbolic addresses of abstract memory objects. Our abstract heap domain can be combined with value domains in a straightforward manner, which particularly allows us to reason about shapes and contents of heap structures at the same time. The information obtained from the analysis can be used to prove memory safety and reachability properties, expressed by user assertions, of programs manipulating dynamic data structures, mainly linked lists. The solution has been implemented in the 2LS framework and compared against state-of-the-art tools that perform the best in heap-related categories of the well-known Software Verification Competition (SV-COMP). Results show that 2LS outperforms these tools on benchmarks requiring combined reasoning about unbounded data structures and their numerical contents.
Viktor Malík, Martin Hruska, Peter Schrammel, Tomás Vojnar
FMCAD3
2018 2LS: Memory Safety and Non-termination - (Competition Contribution)
Viktor Malík, Stefan Marticek, Peter Schrammel, Mandayam K. Srivas, Tomás Vojnar, Johanan Wahlang
TACAS (2)3
2018 Effective Verification for Low-Level Software with Competing Interrupts
abstract
Interrupt-driven software is difficult to test and debug, especially when interrupts can be nested and subject to priorities. Interrupts can arrive at arbitrary times, leading to an exponential blow-up in the number of cases to consider. We present a new formal approach to verifying interrupt-driven software based on symbolic execution. The approach leverages recent advances in the encoding of the execution traces of interacting, concurrent threads. We assess the performance of our method on benchmarks drawn from embedded systems code and device drivers, and experimentally compare it to conventional approaches that use source-to-source transformations. Our results show that our method significantly outperforms these techniques. To the best of our knowledge, our work is the first to demonstrate effective verification of low-level embedded software with nested interrupts.
Lihao Liang, Tom Melham, Daniel Kroening, Peter Schrammel, Michael Tautschnig
ACM Trans. Embed. Comput. Syst.4
2018 Bit-Precise Procedure-Modular Termination Analysis
abstract
Non-termination is the root cause of a variety of program bugs, such as hanging programs and denial-of-service vulnerabilities. This makes an automated analysis that can prove the absence of such bugs highly desirable. To scale termination checks to large systems, an interprocedural termination analysis seems essential. This is a largely unexplored area of research in termination analysis, where most effort has focussed on small but difficult single-procedure problems. We present a modular termination analysis for C programs using template-based interprocedural summarisation. Our analysis combines a context-sensitive, over-approximating forward analysis with the inference of under-approximating preconditions for termination. Bit-precise termination arguments are synthesised over lexicographic linear ranking function templates. Our experimental results show the advantage of interprocedural reasoning over monolithic analysis in terms of efficiency, while retaining comparable precision.
Hong-Yi Chen, Cristina David, Daniel Kroening, Peter Schrammel, Björn Wachter
ACM Trans. Program. Lang. Syst.4
2017 Compositional Safety Refutation Techniques
Kumar Madhukar, Peter Schrammel, Mandayam K. Srivas
ATVA2
2017 Lifting CDCL to Template-Based Abstract Domains for Program Verification
Rajdeep Mukherjee, Peter Schrammel, Leopold Haller, Daniel Kroening, Tom Melham
ATVA2
2017 Concurrent Program Verification with Invariant-Guided Underapproximation
Sumanth Prabhu S, Peter Schrammel, Mandayam K. Srivas, Michael Tautschnig, Anand Yeolekar
ATVA2
2017 Parallel bug-finding in concurrent programs via reduced interleaving instances
abstract
Concurrency poses a major challenge for program verification, but it can also offer an opportunity to scale when subproblems can be analysed in parallel. We exploit this opportunity here and use a parametrizable code-to-code translation to generate a set of simpler program instances, each capturing a reduced set of the original program's interleavings. These instances can then be checked independently in parallel. Our approach does not depend on the tool that is chosen for the final analysis, is compatible with weak memory models, and amplifies the effectiveness of existing tools, making them find bugs faster and with fewer resources. We use Lazy-CSeq as an off-the-shelf final verifier to demonstrate that our approach is able, already with a small number of cores, to find bugs in the hardest known concurrency benchmarks in a matter of minutes, whereas other dynamic and static tools fail to do so in hours.
Truc L. Nguyen, Peter Schrammel, Bernd Fischer 0002, Salvatore La Torre, Gennaro Parlato
ASE2
2017 Incremental bounded model checking for embedded software
abstract
Abstract Program analysis is on the brink of mainstream usage in embedded systems development. Formal verification of behavioural requirements, finding runtime errors and test case generation are some of the most common applications of automated verification tools based on bounded model checking (BMC). Existing industrial tools for embedded software use an off-the-shelf bounded model checker and apply it iteratively to verify the program with an increasing number of unwindings. This approach unnecessarily wastes time repeating work that has already been done and fails to exploit the power of incremental SAT solving. This article reports on the extension of the software model checker C BMC to support incremental BMC and its successful integration with the industrial embedded software verification tool BTC E MBEDDED TESTER . We present an extensive evaluation over large industrial embedded programs, mainly from the automotive industry. We show that incremental BMC cuts runtimes by one order of magnitude in comparison to the standard non-incremental approach, enabling the application of formal verification to large and complex embedded software. We furthermore report promising results on analysing programs with arbitrary loop structure using incremental BMC, demonstrating its applicability and potential to verify general software beyond the embedded domain.
Peter Schrammel, Daniel Kroening, Martin Brain, Ruben Martins, Tino Teige, Tom Bienmüller
Formal Aspects Comput.1
2016 Unbounded safety verification for hardware using software analyzers
Rajdeep Mukherjee, Peter Schrammel, Daniel Kroening, Tom Melham
DATE2
2016 Sound static deadlock analysis for C/Pthreads
abstract
We present a static deadlock analysis approach for C/pthreads. The design of our method has been guided by the requirement to analyse real-world code. Our approach is sound (i.e., misses no deadlocks) for programs that have defined behaviour according to the C standard and the pthreads specification, and is precise enough to prove deadlock-freedom for a large number of such programs. The method consists of a pipeline of several analyses that build on a new context- and thread-sensitive abstract interpretation framework. We further present a lightweight dependency analysis to identify statements relevant to deadlock analysis and thus speed up the overall analysis. In our experimental evaluation, we succeeded to prove deadlock-freedom for 292 programs from the Debian GNU/Linux distribution with in total 2.3 MLOC in 4 hours.
Daniel Kroening, Daniel Poetzl, Peter Schrammel, Björn Wachter
ASE3
2016 2LS for Program Analysis - (Competition Contribution)
Peter Schrammel, Daniel Kroening
TACAS1
2016 Generating test case chains for reactive systems
abstract
Testing of reactive systems is challenging because long input sequences are often needed to drive them into a state to test a desired feature. This is particularly problematic in on-target testing , where a system is tested in its real-life application environment and the amount of time required for resetting is high. This article presents an approach to discovering a test case chain —a single software execution that covers a group of test goals and minimizes overall test execution time. Our technique targets the scenario in which test goals for the requirements are given as safety properties. We give conditions for the existence and minimality of a single test case chain and minimize the number of test case chains if a single test case chain is infeasible. We report experimental results with our ChainCover tool for C code generated from Simulink models and compare it to state-of-the-art test suite generators.
Peter Schrammel, Tom Melham, Daniel Kroening
Int. J. Softw. Tools Technol. Transf.1
2015 Effective verification of low-level software with nested interrupts
Daniel Kroening, Lihao Liang, Tom Melham, Peter Schrammel, Michael Tautschnig
DATE4
2015 Unbounded-time reachability analysis of hybrid systems by abstract acceleration
abstract
Linear dynamical systems are ubiquitous in hybrid systems, both as physical models or as software control modules. Therefore we need an unbounded-time reachability analysis that can cope with industrial-scale hybrid system models with hundreds of variables. Abstract acceleration is a method developed for the unbounded-time polyhedral reachability analysis of linear software loops that has made promising progress in recent years. The method relies on a relaxation of the solution of the linear recurrence equation, leading to a precise convex over-approximation of the set of reachable states. It has been shown to be competitive with alternative approaches using set-based simulation or constraint solving. This paper explains the basic concepts of the technique, surveys recent advances of the technique towards the application to hybrid discrete and continuous-time linear dynamical systems, and formulates challenges to be tackled.
Peter Schrammel
EMSOFT1
2015 Successful Use of Incremental BMC in the Automotive Industry
Peter Schrammel, Daniel Kroening, Martin Brain, Ruben Martins, Tino Teige, Tom Bienmüller
FMICS1
2015 Synthesising Interprocedural Bit-Precise Termination Proofs (T)
abstract
Proving program termination is key to guaranteeing absence of undesirable behaviour, such as hanging programs and even security vulnerabilities such as denial-of-service attacks. To make termination checks scale to large systems, interprocedural termination analysis seems essential, which is a largely unexplored area of research in termination analysis, where most effort has focussed on difficult single-procedure problems. We present a modular termination analysis for C programs using template-based interprocedural summarisation. Our analysis combines a context-sensitive, over-approximating forward analysis with the inference of under-approximating preconditions for termination. Bit-precise termination arguments are synthesised over lexicographic linear ranking function templates. Our experimental results show that our tool 2LS outperforms state-of-the-art alternatives, and demonstrate the clear advantage of interprocedural reasoning over monolithic analysis in terms of efficiency, while retaining comparable precision.
Hong-Yi Chen, Cristina David, Daniel Kroening, Peter Schrammel, Björn Wachter
ASE4
2015 Safety Verification and Refutation by k-Invariants and k-Induction
Martin Brain, Saurabh Joshi 0001, Daniel Kroening, Peter Schrammel
SAS4
2015 Unbounded-Time Analysis of Guarded LTI Systems with Inputs by Abstract Acceleration
Dario Cattaruzza, Alessandro Abate, Peter Schrammel, Daniel Kroening
SAS3
2014 Necessary and Sufficient Preconditions via Eager Abstraction
Mohamed Nassim Seghir, Peter Schrammel
APLAS2
2014 Model and Proof Generation for Heap-Manipulating Programs
Martin Brain, Cristina David, Daniel Kroening, Peter Schrammel
ESOP4
2014 Accelerated test execution using GPUs
abstract
As product life-cycles become shorter and the scale and complexity of systems increase, accelerating the execution of large test suites gains importance. Existing research has primarily focussed on techniques that reduce the size of the test suite. By contrast, we propose a technique that accelerates test execution, allowing test suites to run in a fraction of the original time, by parallel execution with a Graphics Processing Unit (GPU).
Ajitha Rajan, Subodh Sharma 0001, Peter Schrammel, Daniel Kroening
ASE3
2014 Abstract acceleration of general linear loops
abstract
We present abstract acceleration techniques for computing loop invariants for numerical programs with linear assignments and conditionals. Whereas abstract interpretation techniques typically over-approximate the set of reachable states iteratively, abstract acceleration captures the effect of the loop with a single, non-iterative transfer function applied to the initial states at the loop head. In contrast to previous acceleration techniques, our approach applies to any linear loop without restrictions. Its novelty lies in the use of the Jordan normal form decomposition of the loop body to derive symbolic expressions for the entries of the matrix modeling the effect of η ≥ Ο iterations of the loop. The entries of such a matrix depend on η through complex polynomial, exponential and trigonometric functions. Therefore, we introduces an abstract domain for matrices that captures the linear inequality relations between these complex expressions. This results in an abstract matrix for describing the fixpoint semantics of the loop.
Bertrand Jeannet, Peter Schrammel, Sriram Sankaranarayanan 0001
POPL2
2014 Speeding Up Logico-Numerical Strategy Iteration
David Monniaux, Peter Schrammel
SAS2
2014 Abstract acceleration in linear relation analysis
Laure Gonnord, Peter Schrammel
Sci. Comput. Program.2
2013 Chaining Test Cases for Reactive System Testing
Peter Schrammel, Tom Melham, Daniel Kroening
ICTSS1
2013 Logico-Numerical Max-Strategy Iteration
Peter Schrammel, Pavle Subotic
VMCAI1
2012 From hybrid data-flow languages to hybrid automata: a complete translation
abstract
Hybrid systems are used to model embedded computing systems interacting with their physical environment. There is a conceptual mismatch between high-level hybrid system languages like Simulink, which are used for simulation, and hybrid automata, the most suitable representation for safety verification. Indeed, in simulation languages the interaction between discrete and continuous execution steps is specified using the concept of zero-crossings, whereas hybrid automata exploit the notion of staying conditions. We describe a translation from a hybrid data-flow language to logico-numerical hybrid automata that points out this issue carefully. We expose various zero-crossing semantics, propose a sound translation, and discuss to which extent the original semantics is preserved.
Peter Schrammel, Bertrand Jeannet
HSCC1
2012 Applying abstract acceleration to (co-)reachability analysis of reactive programs
Peter Schrammel, Bertrand Jeannet
J. Symb. Comput.1
2011 Logico-Numerical Abstract Acceleration and Application to the Verification of Data-Flow Programs
Peter Schrammel, Bertrand Jeannet
SAS1