[klee-dev] Rust verification tools

Alastair Reid adreid at google.com
Thu Sep 3 14:58:53 BST 2020


Hi KLEE-devs,

A quick update on where we got to with Rust verification over at Google

- We am able to compile/link most Rust programs to generate LLVM bitcode.
  (The main obstacle at the moment is crates that include C code.)

- We can run KLEE on that bitcode directly
  Details:
https://github.com/project-oak/rust-verification-tools/blob/main/docs/using-klee.md

- Compiling and then running KLEE is quite complicated because you need
lots of
  obscure Rust flags to make it work.
  So, we have written a script 'cargo-verify' that hides a lot of the
complexity
  Details:
https://github.com/project-oak/rust-verification-tools/blob/main/docs/using-annotations.md

- A major theme in our research project is trying to narrow the gap between
  dynamic verification (aka testing) and static verification (aka formal
verification).
  So we have reimplemented the 'proptest' property-testing library so that
it can be
  used with a formal verification tool.
  This lets you write a single test harness and then choose to use it
either with
  the proptest library (dynamic verification) or with our 'propverify'
library
  and KLEE (static verification).
  Details:
https://github.com/project-oak/rust-verification-tools/blob/main/docs/using-propverify.md

The complete collection of tools and libraries are open-sourced using the
usual Rust licenses.
https://github.com/project-oak/rust-verification-tools

This is very much a research prototype at this stage - more interesting
than useful.

--
Alastair
-------------- next part --------------
HTML attachment scrubbed and removed


More information about the klee-dev mailing list