Jochen Hoenicke

dblp:79/3265 · DBLP profile ↗
← Back
35ranked-venue papers
9as first author
5since 2021 · last 2026
0000-0002-6314-1041ORCID · verified

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

Software engineering, systems software and programming languages · 27 · 7 first-author · 2 since 2021Theory of computation · 14 · 5 first-author · 3 since 2021Artificial intelligence and machine learning · 2 · 1 since 2021
YearPublicationVenuePosition
2026 A lazy and modular approach to int-blasting
abstract
Abstract Bit-vector operations are ubiquitous in programming languages and formal verification, but their complex semantics pose challenges for SMT solvers. Although bit-blasting—translating bit-vectors to Boolean variables—is widely used, it struggles with arithmetic bit-vector operations on large bit-widths (e.g., 64-bit or 256-bit variables) due to exponential blowup. Int-blasting, which maps bit-vectors to integer arithmetic, offers a scalable alternative for arithmetic bit-vector operations, but introduces many modulo operations of which some are redundant. This article presents a modular three-step translation from bit-vector formulas to integer formulas, designed to keep the amount of modulo operations low, while preserving correctness. In the first step, we translate bit-vector operations to integer operations. Thereby, we introduce the two functions $$\texttt {bv2nat}$$ and $$\texttt {nat2bv}_k$$ as explicit operators in the SMT-LIB theory of bit-vectors. Each integer operation is wrapped by $$\texttt {bv2nat}$$ and $$\texttt {nat2bv}_k$$ . Hence, the sort of all bit-vector terms is preserved. Therefore, the first translation step is an equivalence transformation. In the second step, we simplify the formula by replacing the composition $$\texttt {bv2nat} \circ \texttt {nat2bv}_k$$ with a modulo operation. These modulo operations are added lazily, i.e., if the modulo does not change the result of the operation, it is omitted. In our experiments this reduced the average amount of modulo operations by 51%. In the third step, we introduce lemmas to precisely capture the meaning of $$\texttt {bv2nat}$$ and $$\texttt {nat2bv}_k$$ . We prove that these lemmas suffice to solve bit-vector formulas. Furthermore, we illustrate that these lemmas are also sufficient for bit-vector formulas with quantifiers, arrays and uninterpreted functions. We implement our translation in SMTInterpol and evaluate it on 19570 SMT-LIB benchmarks. Results show that our lazy int-blasting solves 15% more tasks than an eager int-blasting, with 35% faster average runtime and 12% lower memory usage.
Max Barth, Matthias Heizmann, Jochen Hoenicke
Acta Informatica3
2023 Choose Your Colour: Tree Interpolation for Quantified Formulas in SMT
abstract
Abstract We present a generic tree-interpolation algorithm in the SMT context with quantifiers. The algorithm takes a proof of unsatisfiability using resolution and quantifier instantiation and computes interpolants (which may contain quantifiers). Arbitrary SMT theories are supported, as long as each theory itself supports tree interpolation for its lemmas. In particular, we show this for the theory combination of equality with uninterpreted functions and linear arithmetic. The interpolants can be tweaked by virtually assigning each literal in the proof to interpolation partitions (colouring the literals) in arbitrary ways. The algorithm is implemented in SMTInterpol.
Elisabeth Henkel, Jochen Hoenicke, Tanja Schindler
CADE2
2023 Ultimate Automizer and the CommuHash Normal Form - (Competition Contribution)
abstract
Abstract The verification approach of Ultimate Automizer utilizes SMT formulas. This paper presents techniques to keep the size of the formulas small. We focus especially on a normal form, called CommuHash normal form that was easy to implement and had a significant impact on the runtime of our tool.
Matthias Heizmann, Max Barth, Daniel Dietsch, Leonard Fichtner, Jochen Hoenicke, Dominik Klumpp, Mehdi Naouar, Tanja Schindler, Frank Schüssele, Andreas Podelski
TACAS (2)5
2021 Incremental Search for Conflict and Unit Instances of Quantified Formulas with E-Matching
Jochen Hoenicke, Tanja Schindler
VMCAI1
2021 Temporal prophecy for proving temporal properties of infinite-state systems
abstract
Abstract Various verification techniques for temporal properties transform temporal verification to safety verification. For infinite-state systems, these transformations are inherently imprecise. That is, for some instances, the temporal property holds, but the resulting safety property does not. This paper introduces a mechanism for tackling this imprecision. This mechanism, which we call temporal prophecy, is inspired by prophecy variables. Temporal prophecy refines an infinite-state system using first-order linear temporal logic formulas, via a suitable tableau construction. For a specific liveness-to-safety transformation based on first-order logic, we show that using temporal prophecy strictly increases the precision. Furthermore, temporal prophecy leads to robustness of the proof method, which is manifested by a cut elimination theorem. We integrate our approach into the Ivy deductive verification system, and show that it can handle challenging temporal verification examples.
Oded Padon, Jochen Hoenicke, Kenneth L. McMillan, Andreas Podelski, Shmuel Sagiv, Sharon Shoham
Formal Methods Syst. Des.2
2019 Scalable Analysis of Real-Time Requirements
abstract
Detecting issues in real-time requirements is usually a trade-off between flexibility and cost: the effort expended depends on how expensive it is to fix a defect introduced by faulty, ambiguous or incomplete requirements. The most rigorous techniques for real-time requirement analysis depend on the formalisation of these requirements. Completely formalised real-time requirements allow the detection of issues that are hard to find through other means, like real-time inconsistency (i.e., "do the requirements lead to deadlocks and starvation of the system?") or vacuity (i.e., "are some requirements trivially satisfied"). Current analysis techniques for real-time requirements suffer from scalability issues - larger sets of such requirements are usually intractable. We present a new technique to analyse formalised real-time requirements for various properties. Our technique leverages recent advances in software model checking and automatic theorem proving by converting the analysis problem for real-time requirements to a program analysis task. We also report preliminary results from an ongoing, large scale application of our technique in the automotive domain at Bosch.
Vincent Langenfeld, Daniel Dietsch, Bernd Westphal, Jochen Hoenicke, Amalinda Post
RE4
2019 Solving and Interpolating Constant Arrays Based on Weak Equivalences
Jochen Hoenicke, Tanja Schindler
VMCAI1
2018 Temporal Prophecy for Proving Temporal Properties of Infinite-State Systems
abstract
Various verification techniques for temporal properties transform temporal verification to safety verification. For infinite-state systems, these transformations are inherently imprecise. That is, for some instances, the temporal property holds, but the resulting safety property does not. This paper introduces a mechanism for tackling this imprecision. This mechanism, which we call temporal prophecy, is inspired by prophecy variables. Temporal prophecy refines an infinite-state system using first-order linear temporal logic formulas, via a suitable tableau construction. For a specific liveness-to-safety transformation based on first-order logic, we show that using temporal prophecy strictly increases the precision. Furthermore, temporal prophecy leads to robustness of the proof method, which is manifested by a cut elimination theorem. We integrate our approach into the Ivy deductive verification system, and show that it can handle challenging temporal verification examples.
Oded Padon, Jochen Hoenicke, Kenneth L. McMillan, Andreas Podelski, Shmuel Sagiv, Sharon Shoham
FMCAD2
2018 Ultimate Taipan with Dynamic Block Encoding - (Competition Contribution)
Daniel Dietsch, Marius Greitschus, Matthias Heizmann, Jochen Hoenicke, Alexander Nutz, Andreas Podelski, Christian Schilling 0001, Tanja Schindler
TACAS (2)4
2018 Ultimate Automizer and the Search for Perfect Interpolants - (Competition Contribution)
Matthias Heizmann, Yu-Fang Chen 0001, Daniel Dietsch, Marius Greitschus, Jochen Hoenicke, Yong Li 0031, Alexander Nutz, Betim Musa, Christian Schilling 0001, Tanja Schindler, Andreas Podelski
TACAS (2)5
2018 Reducing liveness to safety in first-order logic
abstract
We develop a new technique for verifying temporal properties of infinite-state (distributed) systems. The main idea is to reduce the temporal verification problem to the problem of verifying the safety of infinite-state systems expressed in first-order logic. This allows to leverage existing techniques for safety verification to verify temporal properties of interesting distributed protocols, including some that have not been mechanically verified before. We model infinite-state systems using first-order logic, and use first-order temporal logic (FO-LTL) to specify temporal properties. This general formalism allows to naturally model distributed systems, while supporting both unbounded-parallelism (where the system is allowed to dynamically create processes), and infinite-state per process. The traditional approach for verifying temporal properties of infinite-state systems employs well-founded relations (e.g. using linear arithmetic ranking functions). In contrast, our approach is based the idea of fair cycle detection. In finite-state systems, temporal verification can always be reduced to fair cycle detection (a system contains a fair cycle if it revisits a state after satisfying all fairness constraints). However, with both infinitely many states and infinitely many fairness constraints, a straightforward reduction to fair cycle detection is unsound. To regain soundness, we augment the infinite-state transition system by a dynamically computed finite set, that exploits the locality of transitions. This set lets us define a form of fair cycle detection that is sound in the presence of both infinitely many states, and infinitely many fairness constraints. Our approach allows a new style of temporal verification that does not explicitly involve ranking functions. This fits well with pure first-order verification which does not explicitly reason about numerical values. In particular, it can be used with effectively propositional first-order logic (EPR), in which case checking verification conditions is decidable. We applied our technique to verify temporal properties of several interesting protocols. To the best of our knowledge, we have obtained the first mechanized liveness proof for both TLB Shootdown, and Stoppable Paxos.
Oded Padon, Jochen Hoenicke, Giuliano Losa, Andreas Podelski, Shmuel Sagiv, Sharon Shoham
Proc. ACM Program. Lang.2
2017 Thread modularity at many levels: a pearl in compositional verification
abstract
A thread-modular proof for the correctness of a concurrent program is based on an inductive and interference-free annotation of each thread. It is well-known that the corresponding proof system is not complete (unless one adds auxiliary variables). We describe a hierarchy of proof systems where each level k corresponds to a generalized notion of thread modularity (level 1 corresponds to the original notion). Each level is strictly more expressive than the previous. Further, each level precisely captures programs that can be proved using uniform Ashcroft invariants with k universal quantifiers. We demonstrate the usefulness of the hierarchy by giving a compositional proof of the Mach shootdown algorithm for TLB consistency. We show a proof at level 2 that shows the algorithm is correct for an arbitrary number of CPUs. However, there is no proof for the algorithm at level 1 which does not involve auxiliary state.
Jochen Hoenicke, Rupak Majumdar, Andreas Podelski
POPL1
2016 Proof Tree Preserving Tree Interpolation
Jürgen Christ, Jochen Hoenicke
J. Autom. Reason.2
2015 Cutting the Mix
Jürgen Christ, Jochen Hoenicke
CAV (2)2
2015 Automated Program Verification
Azadeh Farzan, Matthias Heizmann, Jochen Hoenicke, Zachary Kincaid, Andreas Podelski
LATA3
2014 Termination Analysis by Learning Terminating Programs
Matthias Heizmann, Jochen Hoenicke, Andreas Podelski
CAV2
2014 Ultimate Kojak - (Competition Contribution)
Evren Ermis, Alexander Nutz, Daniel Dietsch, Jochen Hoenicke, Andreas Podelski
TACAS4
2014 Ultimate Automizer with Unsatisfiable Cores - (Competition Contribution)
Matthias Heizmann, Jürgen Christ, Daniel Dietsch, Jochen Hoenicke, Markus Lindenmann, Betim Musa, Christian Schilling 0001, Stefan Wissert, Andreas Podelski
TACAS4
2013 Linear Ranking for Linear Lasso Programs
Matthias Heizmann, Jochen Hoenicke, Jan Leike, Andreas Podelski
ATVA2
2013 Software Model Checking for People Who Love Automata
Matthias Heizmann, Jochen Hoenicke, Andreas Podelski
CAV2
2013 Proof Tree Preserving Interpolation
Jürgen Christ, Jochen Hoenicke, Alexander Nutz
TACAS2
2013 Ultimate Automizer with SMTInterpol - (Competition Contribution)
Matthias Heizmann, Jürgen Christ, Daniel Dietsch, Evren Ermis, Jochen Hoenicke, Markus Lindenmann, Alexander Nutz, Christian Schilling 0001, Andreas Podelski
TACAS5
2012 Splitting via Interpolants
Evren Ermis, Jochen Hoenicke, Andreas Podelski
VMCAI2
2012 Automotive behavioral requirements expressed in a specification pattern system: a case study at BOSCH
Amalinda Post, Igor Menzel, Jochen Hoenicke, Andreas Podelski
Requir. Eng.3
2011 rt-Inconsistency: A New Property for Real-Time Requirements
Amalinda Post, Jochen Hoenicke, Andreas Podelski
FASE2
2011 Vacuous real-time requirements
abstract
We introduce the property of vacuity for requirements. A requirement is vacuous in a set of requirements if it is equivalent to a simpler requirement in the context of the other requirements. For example, the requirement “if A then B” is vacuous together with the requirement “not A”. The existence of a vacuous requirement is likely to indicate an error. We give an algorithm that proves the absence of this kind of error for real-time requirements. A case study in an industrial context demonstrates the practical potential of the algorithm.
Amalinda Post, Jochen Hoenicke, Andreas Podelski
RE2
2010 Kleene, Rabin, and Scott Are Available
Jochen Hoenicke, Roland Meyer 0001, Ernst-Rüdiger Olderog
CONCUR1
2010 Nested interpolants
abstract
In this paper, we explore the potential of the theory of nested words for partial correctness proofs of recursive programs. Our conceptual contribution is a simple framework that allows us to shine a new light on classical concepts such as Floyd/Hoare proofs and predicate abstraction in the context of recursive programs. Our technical contribution is an interpolant-based software model checking method for recursive programs. The method avoids the costly construction of the abstract transformer by constructing a nested word automaton from an inductive sequence of `nested interpolants' (i.e., interpolants for a nested word which represents an infeasible error trace).
Matthias Heizmann, Jochen Hoenicke, Andreas Podelski
POPL2
2010 Fairness for Dynamic Control
Jochen Hoenicke, Ernst-Rüdiger Olderog, Andreas Podelski
TACAS1
2010 Doomed program points
Jochen Hoenicke, K. Rustan M. Leino, Andreas Podelski, Martin Schäf, Thomas Wies
Formal Methods Syst. Des.1
2009 It's Doomed; We Can Prove It
Jochen Hoenicke, K. Rustan M. Leino, Andreas Podelski, Martin Schäf, Thomas Wies
FM1
2009 Refinement of Trace Abstraction
Matthias Heizmann, Jochen Hoenicke, Andreas Podelski
SAS2
2008 Model checking Duration Calculus: a practical approach
Roland Meyer 0001, Johannes Faber, Jochen Hoenicke, Andrey Rybalchenko
Formal Aspects Comput.3
2005 Model-Checking of Specifications Integrating Processes, Data and Time
Jochen Hoenicke, Patrick Maier 0001
FM1
2002 Combining Specification Techniques for Processes, Data and Time
Jochen Hoenicke, Ernst-Rüdiger Olderog
IFM1