OSVAuto: automatic proofs about functional specifications in OS verification
Yulun Wu, Bican Xia, Jiale Xu, Bohua Zhan, Tianqi Zhao
TL;DR
OSVAuto addresses the automation gap in proving functional specifications for OS kernel verification by extending sequence-oriented quantifier instantiation to nested sequences, maps, structures, and enumerations. It introduces a specialized language and a four-step algorithm (Normalize, Instantiation, Encoding, Solve) with a classification-graph mechanism and heuristic generation cutoffs to drive SMT solving. Implemented in Python and interfaced with Z3, OSVAuto is evaluated on the μC/OS-II kernel verification in Coq, solving many obligations automatically and reducing manual proof effort. The work demonstrates practical automation for OS verification data types and discusses limitations and avenues for improving completeness and handling uniqueness constraints in proof goals.
Abstract
We present OSVAuto for automatic proofs about functional specifications that commonly arise when verifying operating system kernels. The algorithm behind OSVAuto is designed to support natively those data types that commonly occur in OS verification, including sequences, maps, structures and enumerations. Propositions about these data are encoded into a form that is suitable for SMT solving. For quantifier instantiation, we propose an extension of recent work for automatic proofs about sequences. We evaluate the algorithm on proof obligations adapted from existing verification of the uC-OS/II kernel in Coq, demonstrating that a large number of proof obligations can be solved automatically, significantly reducing the proof effort on the functional side.
