Isabelle-LLVM with Time is a verification framework for simultaneous verification of correctness and worst-case complexity of practically competitive algorithms. It utilizes a stepwise refinement approach, targeting LLVM as backend. It is based on the Isabelle/HOL theorem prover.
You can browse the theories or download the files.
Warning: the .thy files in the download are best viewed with the Isabelle/HOL IDE.
Here are some default starting points for browsing the theories
Final Results Introsort Dynamic Arrays
Shallow Embedding of LLVM Semantics
To compile and run the benchmarks
cd benchmarks\sorting
make run
This will run the sorting benchmarks. Warning: We have only tested this on a Linux x86_64 platform so far. We do not (yet) know how LLVM will digest our code on other platforms.
To re-check the proofs, run
cd thys
isabelle build -D . -d ../contrib/Imperative_HOL_Time/
Here, isabelle must refer to
/your/path/to/Isabelle2020/bin/isabelle
from your Isabelle installation. This will invoke Isabelle to check all proofs and re-generate the exported code.