kot-proof is a Rocq formalisation of the kot OCaml library that offers an implementation of Kaplan,
Okasaki, and Tarjan's persistent catenable deques,
as described in the paper
Simple Confluently Persistent Catenable Lists.
It offers proofs of correctness, thread-safety and O(1) amortised single-threaded time complexity.
If you are coming from the corresponding article, the main theorems are showcased in theories/article.v.
common.vcontains the axioms for buffers and the Heaplang implementation for dequestick.vcontains axioms for time credits (listed as axioms but implementations are available)shared_ref.vcontains the two stable reference interfacesdeque_(corr|cost).vcontains the definition of the deque predicate for the given proof(push|concat|pop)_(corr|cost).v/(pop|eject)_(corr|cost)_lemmas.vontains the proof for the specific function, either the cost or correction analysis
First, install the dependencies:
make install-depsThen, activate the opam switch and compile the project:
eval $(opam env --switch=kot-proof)
make