BFF: foundational and automated verification of bitfield-manipulating programs
Fengmin Zhu, Michael Sammler, Rodolphe Lepigre, Derek Dreyer, Deepak Garg
Abstract
Low-level systems code often needs to interact with data, such as page table entries or network packet headers, in which multiple pieces of information are packaged together as bitfield components of a single machine integer and accessed via bitfield manipulations (e.g., shifts and masking). Most existing approaches to verifying such code employ SMT solvers, instantiated with theories for bit vector reasoning: these provide a powerful hammer, but also significantly increase the trusted computing base of the verification toolchain. In this work, we propose an alternative approach to the verification of bitfield-manipulating systems code, which we call BFF. Building on the RefinedC framework, BFF is not only highly automated (as SMT-based approaches are) but also foundational---i.e., it produces a machine-checked proof of program correctness against a formal semantics for C programs, fully mechanized in Coq. Unlike SMT-based approaches, we do not try to solve the general problem of arbitrary bit vector reasoning, but rather observe that real systems code typically accesses bitfields using simple, well-understood programming patterns: the layout of a bit vector is known up front, and its bitfields are accessed in predictable ways through a handful of bitwise operations involving bit masks. Correspondingly, we center our approach around the concept of a structured bit vector---i.e., a bit vector with a known bitfield layout---which we use to drive simple and predictable automation. We validate the BFF approach by verifying a range of bitfield-manipulating C functions drawn from real systems code, including page table manipulation code from the Linux kernel and the pKVM hypervisor.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Cited by top-tier papers2
- Destabilizing IrisSimon Spies, Niklas Mück, Haoyi Zeng, Michael Sammler et al.PLDI 2025 · 5 citations
- Practical Verification of System-Software Components Written in Standard CCan Cebeci, Yonghao Zou, Diyu Zhou, George Candea et al.SOSP 2024 · 2 citations
Builds on7
- RefinedC: automating the foundational verification of C code with refined ownership typesMichael Sammler, Rodolphe Lepigre, Robbert Krebbers, Kayvan Memarian et al.PLDI 2021 · 83 citations
- Validating SMT solvers via semantic fusionDominik Winterer, Chengyu Zhang, Zhendong SuPLDI 2020 · 80 citations
- On the unusual effectiveness of type-aware operator mutations for testing SMT solversDominik Winterer, Chengyu Zhang, Zhendong SuOOPSLA 2020 · 55 citations
- Detecting critical bugs in SMT solvers using blackbox mutational fuzzingMuhammad Numair Mansur, Maria Christakis, Valentin Wüstholz, Fuyuan ZhangFSE 2020 · 51 citations
- Generative type-aware mutation for testing SMT solversJiwon Park, Dominik Winterer, Chengyu Zhang, Zhendong SuOOPSLA 2021 · 31 citations
Related papers
- Interactive Bitvector Reasoning using Verified Bit-BlastingHenrik Böving, Siddharth Bhat, Luisa Cicolini, Alex C. Keizer et al.OOPSLA 2025 · 3 citations
- Certified Decision Procedures for Width-Independent Bitvector PredicatesSiddharth Bhat, Léo Stefanesco, Chris Hughes, Tobias GrosserOOPSLA 2025 · 2 citations
- Scalable Bit-Blasting with AbstractionsAina Niemetz, Mathias Preiner, Yoni ZoharCAV 2024 · 11 citations
- Automating Bitvector and Finite Field Equivalence Proofs in LeanElizaveta Pertseva, Valentin Robert, Clark W. Barrett, James ParkerCAV 2026
- CoqQFBV: A Scalable Certified SMT Quantifier-Free Bit-Vector SolverXiaomu Shi, Yu-Fu Fu, Jiaxiang Liu, Ming-Hsien Tsai et al.CAV 2021 · 10 citations
