Skip to content

Latest commit

 

History

History
64 lines (41 loc) · 2.43 KB

index.md

File metadata and controls

64 lines (41 loc) · 2.43 KB

Isabelle-LLVM with Time Logo Isabelle-LLVM with Time

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.

Getting Started

You can browse the theories or download the files.

Warning: the .thy files in the download are best viewed with the Isabelle/HOL IDE.

Starting Points for Browsing

Here are some default starting points for browsing the theories

Introsort Case Study

Final Results Introsort

Isabelle-LLVM

Shallow Embedding of LLVM Semantics

Nondeterministic Result Monad with Resources

NREST

Prerequisites

Compiling and running benchmarks

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.

Re-Checking the Proofs

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.

Talks and Publications

Isabelle-LLVM without Time

IJCAR'2020 Paper Slides

ITP'2019 Paper Slides

Mar 2020 Talk in Enschede

Dec 2019 Talk in Rennes