sr-lab / iris-jellyfish

Extension of atomic triples in Iris with atomic postconditions and formal verification of the Lazy JellyFish skip list

Repository from Github https://github.comsr-lab/iris-jellyfishRepository from Github https://github.comsr-lab/iris-jellyfish

Formal Verification of a Concurrent Map in Iris: the Lazy JellyFish Skip List

A Case Study on the Specification and Verification of Concurrent Data Structures

Artifact containing mechanized proofs of the lazy JellyFish skip list. We also present proofs for simpler data structures which showcase how our arguments evolve from a simple linked list to a complex skip list. To compile this Coq development, simply run make.

Prerequisites

This development is known to compile with

  • Coq 8.16.0
  • A development version of Iris

Directory Structure

This development contains proofs for 4 data structures. The lib/ directory contains definitions and lemmas required for all structures. The four structures can be found in:

  • lazy_list/: Proofs for an append-only lazy list.
  • skip_list/:
    • lists/: Proofs for an append-only skip list based on linked lists.
    • arrays/: Proofs for an append-only skip list based on arrays.
  • jellyfish/: Proofs for the lazy JellyFish skip list.

Each of these directories is structured as:

  • code.v: File with code for the data structure.
  • inv/: Directory with files for invariant definitions.
  • spec/: Directory with files for proofs of Hoare triples for the structure's methods.
  • client.v: File with proofs for an example client.

About

Extension of atomic triples in Iris with atomic postconditions and formal verification of the Lazy JellyFish skip list

License:GNU General Public License v3.0


Languages

Language:Coq 99.6%Language:Makefile 0.4%