Author:
Parthasarathy Gaurav,Müller Peter,Summers Alexander J.
Abstract
AbstractA program verifier produces reliable results only if both the logic used to justify the program’s correctness is sound, and the implementation of the program verifier is itself correct. Whereas it is common to formally prove soundness of the logic, the implementation of a verifier typically remains unverified. Bugs in verifier implementations may compromise the trustworthiness of successful verification results. Since program verifiers used in practice are complex, evolving software systems, it is generally not feasible to formally verify their implementation.In this paper, we present an alternative approach: we validate successful runs of the widely-used Boogie verifier by producing a certificate which proves correctness of the obtained verification result. Boogie performs a complex series of program translations before ultimately generating a verification condition whose validity should imply the correctness of the input program. We show how to certify three of Boogie’s core transformation phases: the elimination of cyclic control flow paths, the (SSA-like) replacement of assignments by assumptions using fresh variables (passification), and the final generation of verification conditions. Similar translations are employed by other verifiers. Our implementation produces certificates in Isabelle, based on a novel formalisation of the Boogie language.
Publisher
Springer International Publishing
Reference44 articles.
1. Boogie verifier repository. https://github.com/boogie-org/boogie
2. Aguirre, A.: Towards a provably correct encoding from F* to SMT. Technical report, INRIA (2016)
3. Alkassar, E., Böhme, S., Mehlhorn, K., Rizkallah, C.: A framework for the verification of certifying computations. JAR 52(3), 241–273 (2014)
4. Astrauskas, V., Müller, P., Poli, F., Summers, A.J.: Leveraging Rust types for modular specification and verification. In: OOPSLA (2019)
5. Barnett, M., Fähndrich, M., Leino, K.R.M., Müller, P., Schulte, W., Venter, H.: Specification and verification: the Spec# experience. CACM 54(6), 81–91 (2011)
Cited by
12 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Towards Trustworthy Automated Program Verifiers: Formally Validating Translations into an Intermediate Verification Language;Proceedings of the ACM on Programming Languages;2024-06-20
2. Sound Gradual Verification with Symbolic Execution;Proceedings of the ACM on Programming Languages;2024-01-05
3. A Formalization of Core Why3 in Coq;Proceedings of the ACM on Programming Languages;2024-01-05
4. Assume but Verify: Deductive Verification of Leaked Information in Concurrent Applications;Proceedings of the 2023 ACM SIGSAC Conference on Computer and Communications Security;2023-11-15
5. Completeness Thresholds for Memory Safety of Array Traversing Programs;Proceedings of the 12th ACM SIGPLAN International Workshop on the State Of the Art in Program Analysis;2023-06-06