To formally verify Rust programs, we are building coq-of-rust, a translator from Rustย ๐ฆ code to the proof system Coqย ๐. We generate Coq code that is as similar as possible to the original Rust code, so that the user can easily understand the generated code and write proofs about it. In this blog post, we explain how we are representing side effects in Coq.
3 posts tagged with "Rust"
View All TagsRepresentation of Rust methods in Coq
With our project coq-of-rust we aim to translate high-level Rust code to similar-looking Coq code, to formally verify Rust programs. One of the important constructs in the Rust language is the method syntax. In this post, we present our technique to translate Rust methods using type-classes in Coq.
Current formal verification efforts ๐ช
We are diversifying ourselves to apply formal verification on 3๏ธโฃ new languages with Solidity, Rust, and TypeScript. In this article we describe our approach. For these three languages, we translate the code to the proof system ๐ย Coq. We generate the cleanestย ๐งผ possible output to simplify the formal verificationย ๐ effort that comes after.
Formal verification is a way to ensure that a program follows its specification inย ๐ฏ% of cases thanks to the use of mathematical methods. It removes far more bugs and security issues than testing, and is necessary to deliver software of the highest qualityย ๐.