Voblint: End-to-End Soundness of a Context-Sensitive Goblint-Style Analyzer in Isabelle/HOL
Version 1 / Nov 05, 2026 / CC BY 4.0
Abstract
Goblint-style analyzers solve side-effecting equations, where evaluating one unknown can contribute to other unknowns. An existing Isabelle/HOL proof establishes solver partial correctness without connecting the equations to execution. We mechanize this connection for a scalar imperative language with recursive procedures but no pointers or heap memory.
We adapt the local traces of Schwarz et al. to record procedure activations and the callers resumed by returns. A context policy relates concrete calls to one or more analysis contexts. A cover assigns sets of stores to program points and contexts as candidate overapproximations of reachability. We prove that five local obligations suffice for a cover to contain every valid trace’s final store in every admitted context, on any control-flow graph. A post-solution assigns abstract values that bound each equation’s result and side effects. When the abstract operations are sound and the routing agrees with the context policy, every post-solution induces a cover. The verified solver computes a post-solution when it returns.
For every accepted configuration, whenever the Isabelle-defined analyzer returns a report, it overapproximates the stores reached by finite source executions from the prescribed initial states. Whenever execution reaches a check, PROVED guarantees that its condition holds, and REFUTED guarantees that it fails. Neither verdict establishes reachability. This source-level guarantee applies to the Isabelle-defined analyzer; solver termination, parsing, and correctness of generated code are not established.
Provenance statement
Tools used
- Isabelle
- IsabelleVersion 2025-2
- Anthropic
- Claude
- OpenAI
- ChatGPT
References
- Kalmer Apinis; Helmut Seidl; Vesal Vojdani. Side-Effecting Constraint Systems: A Swiss Army Knife for Program Analysis. Programming Languages and Systems (APLAS 2012), vol. 7705, pp. 157–172. 2012DOI
- Clemens Ballarin. Locales: A Module System for Mathematical Theories. Journal of Automated Reasoning, vol. 52, no. 2, pp. 123–153. 2014DOI
- Sandrine Blazy; Vincent Laporte; André Maroneze; David Pichardie. Formal Verification of a C Value Analysis Based on Abstract Interpretation. Static Analysis, pp. 324–344. 2013DOI
- Joachim Breitner. Shivers' Control Flow Analysis. Archive of Formal Proofs. 2010link
- David Cachera; Thomas Jensen; David Pichardie; Vlad Rusu. Extracting a Data Flow Analyser in Constructive Logic. Theoretical Computer Science, vol. 342, no. 1, pp. 56–78. 2005DOI
- David Cachera; David Pichardie. A Certified Denotational Abstract Interpreter. Interactive Theorem Proving (ITP 2010), pp. 9–24. 2010DOI
- Frédéric Dabrowski; David Pichardie. A Certified Data Race Analysis for a Java-like Language. Theorem Proving in Higher Order Logics (TPHOLs 2009), pp. 212–227. 2009DOI
- Paulo Emílio de Vilhena; François Pottier; Jacques-Henri Jourdan. Spy Game: Verifying a Local Generic Solver in Iris. Proceedings of the ACM on Programming Languages, vol. 4, no. POPL, pp. 33:1–33:28. 2020DOI
- Lucas Franceschino; David Pichardie; Jean-Pierre Talpin. Verified Functional Programming of an Abstract Interpreter. Static Analysis (SAS 2021), pp. 124–143. 2021. Hosted browser version: https://w95psp.github.io/verified-abstract-interpreterDOI
- Florian Haftmann; Tobias Nipkow. Code Generation via Higher-Order Rewrite Systems. Functional and Logic Programming (FLOPS 2010), vol. 6009, pp. 103–117. 2010DOI
Show all 39 referencesShow fewer references
- Martin Hofmann; Aleksandr Karbyshev; Helmut Seidl. Verifying a Local Generic Solver in Coq. Static Analysis (SAS 2010), pp. 340–355. 2010DOI
- David Van Horn; Matthew Might. Abstracting Abstract Machines. Proceedings of the 15th ACM SIGPLAN International Conference on Functional Programming (ICFP), pp. 51–62. 2010DOI
- Brian Huffman; Ondřej Kunčar. Lifting and Transfer: A Modular Design for Quotients in Isabelle/HOL. Certified Programs and Proofs (CPP 2013), pp. 131–146. 2013DOI
- Bertrand Jeannet; Wendelin Serwe. Abstracting Call-Stacks for Interprocedural Verification of Imperative Programs. Algebraic Methodology and Software Technology (AMAST 2004), vol. 3116, pp. 258–273. 2004DOI
- Jacques-Henri Jourdan; Vincent Laporte; Sandrine Blazy; Xavier Leroy; David Pichardie. A Formally-Verified C Static Analyzer. Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), pp. 247–259. 2015DOI
- Jens Knoop; Bernhard Steffen. The Interprocedural Coincidence Theorem. Compiler Construction (CC '92), vol. 641, pp. 125–140. 1992DOI
- Peter Lammich; Markus Müller-Olm. Formalization of Conflict Analysis of Programs with Procedures, Thread Creation, and Monitors. Archive of Formal Proofs. 2007link
- Manuel Lerchner. Voblint: A Verified Goblint-Style Static Analysis Pipeline in Isabelle/HOL. Zenodo. 2026DOI
- Manuel Lerchner. Voblint: Towards a Verified Goblint-Style Analysis Pipeline in Isabelle/HOL. 2026. Draftlink
- Xavier Leroy. Formal Verification of a Realistic Compiler. Communications of the ACM, vol. 52, no. 7, pp. 107–115. 2009DOI
- Sébastien Michelland; Yannick Zakowski; Laure Gonnord. Abstract Interpreters: A Monadic Approach to Modular Verification. Proceedings of the ACM on Programming Languages, vol. 8, no. ICFP. 2024DOI
- Matthew Might; Panagiotis Manolios. A Posteriori Soundness for Non-deterministic Abstract Interpretations. Verification, Model Checking, and Abstract Interpretation (VMCAI 2009), vol. 5403, pp. 260–274. 2009DOI
- David Monniaux. Flavors of Abstract Interpretation. 2024. Lecture slides, HAL hal-04750222. Invited tutorial, European Joint Conferences on Theory and Practice of Software (ETAPS 2024), Luxembourglink
- Tobias Nipkow. Abstract Interpretation of Annotated Commands. Interactive Theorem Proving (ITP 2012), pp. 116–132. 2012DOI
- Tobias Nipkow; Gerwin Klein. Concrete Semantics with Isabelle/HOL. Springer. 2014DOI
- Thomas Reps; Susan Horwitz; Mooly Sagiv. Precise Interprocedural Dataflow Analysis via Graph Reachability. Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), pp. 49–61. 1995DOI
- Xavier Rival; Laurent Mauborgne. The Trace Partitioning Abstract Domain. ACM Transactions on Programming Languages and Systems, vol. 29, no. 5. 2007DOI
- Michael Schwarz. Congruences: Make % Sound by Restricting Cases Where We Return a Constant. 2023. Pull request 1161link
- Michael Schwarz; Simmo Saan; Helmut Seidl; Kalmer Apinis; Julian Erhard; Vesal Vojdani. Improving Thread-Modular Abstract Interpretation. Static Analysis, vol. 12913, pp. 359–383. 2021DOI
- Michael Schwarz; Simmo Saan; Helmut Seidl; Julian Erhard; Vesal Vojdani. Clustered Relational Thread-Modular Abstract Interpretation with Local Traces. Programming Languages and Systems (ESOP 2023), vol. 13990, pp. 28–58. 2023DOI
- Helmut Seidl; Varmo Vene; Markus Müller-Olm. Global Invariants for Analysing Multi-threaded Applications. Proceedings of the Estonian Academy of Sciences. Physics. Mathematics, vol. 52, no. 4, pp. 413–436. 2003DOI
- Helmut Seidl; Vesal Vojdani; Julian Erhard; Michael Schwarz. Mixed Flow-Sensitive Static Analysis: Engineering Modularity. FM 2026: Formal Methods, pp. 446–470. 2026DOI
- Micha Sharir; Amir Pnueli. Two Approaches to Interprocedural Data Flow Analysis. Program Flow Analysis: Theory and Applications. 1981
- Yannick Stade; Sarah Tilscher; Helmut Seidl. The Top-Down Solver Verified: Building Confidence in Static Analyzers. Computer Aided Verification, pp. 303–324. 2024. Formalization: Archive of Formal Proofs entry Top_Down_Solver, https://isa-afp.org/entries/Top_Down_Solver.htmlDOI
- Sarah Tilscher; Alexandra Graß; Helmut Seidl. Verifying a Solver for Mixed Flow-Sensitive Analyses. NASA Formal Methods (NFM 2026), pp. 48–69. 2026DOI
- Sarah Tilscher; Alexandra Graß; Helmut Seidl. Verifying a Solver for Mixed Flow-Sensitive Analyses (Artifact). Zenodo. 2026DOI
- Sarah Tilscher; Alexandra Graß; Helmut Seidl; Yannick Stade. Proving Total Correctness of Top-Down Solvers with Widening and Narrowing. Journal of Automated Reasoning, vol. 70, no. 2. 2026. Article 15DOI
- Vesal Vojdani; Kalmer Apinis; Vootele Rõtov; Helmut Seidl; Varmo Vene; Ralf Vogler. Static Race Detection for Device Drivers: The Goblint Approach. Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 391–402. 2016DOI
- Daniel Wasserrab. Backing up Slicing: Verifying the Interprocedural Two-Phase Horwitz-Reps-Binkley Slicer. Archive of Formal Proofs. 2009link
Version history
- v1 · 18 pagesSubmitted by Manuel LerchnerInitial depositCurrentNov 05, 2026