← ALB News · curated headline

Using Proof Dependencies to Manage Verification Projects

arXiv Software Engineering · WORLD · Compilers · 11/11/2026, 12:00:00 AM

arXiv:2611.13250v1 Announce Type: new Abstract: Verification technology now scales to sizable projects, but techniques for managing such projects fall short. There are no effective ways to assess the progress made so far and to determine which verification tasks to perform next. A key issue is that the successful run of a verification tool provides little indication about what has actually been achieved. The guarantees provided depend on the specifications of the verified code as well as any unverified assumptions made in the proofs, e.g., about the behavior of unverified libraries. Manual inspection of specifications and assumptions to determine progress is error-prone and prohibitively expensive. In this paper, we present automated techniques to assess and guide verification projects. All of these techniques employ an automatic proof dependency analysis that computes, for each proof obligation in a project, the specifications, statements, and assumptions that are needed to prove it. We show that this analysis enables effective proof audits by determining all assumptions a proof depends on. We also use it to determine which statements in a program are constrained by the provided specifications, which indicates how strong a specification is. Based on these two insights, we propose a novel progress metric for verification projects and show how to use it to guide verification projects to maximize progress. We implement our approach in the symbolic execution backend of Viper and lift it to the Go verifier Gobra. Our evaluation on real-world benchmarks, including a verified Internet router, shows that the dependency analysis is sound and sufficiently precise, that our progress metric accurately reflects the state of a verification project over time, and that our guidance outperforms standard bottom-up and top-down verification strategies.

Continue to arXiv Software Engineering →

You are being forwarded in 6s — stay on this page