Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sr-lab/iris-jellyfish
Extension of atomic triples in Iris with atomic postconditions and formal verification of the Lazy JellyFish skip list
https://github.com/sr-lab/iris-jellyfish
concurrent-data-structure coq formal-verification logical-atomicity
Last synced: 3 months ago
JSON representation
Extension of atomic triples in Iris with atomic postconditions and formal verification of the Lazy JellyFish skip list
- Host: GitHub
- URL: https://github.com/sr-lab/iris-jellyfish
- Owner: sr-lab
- License: gpl-3.0
- Created: 2022-01-14T10:50:43.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-09-15T15:15:03.000Z (4 months ago)
- Last Synced: 2024-09-30T20:44:32.217Z (3 months ago)
- Topics: concurrent-data-structure, coq, formal-verification, logical-atomicity
- Language: Coq
- Homepage:
- Size: 695 KB
- Stars: 5
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Atomic Postconditions: Resourceful Reasoning beyond Linearization Points
## Formal Verification of the Lazy JellyFish Skip List in IrisArtifact which extends the atomic triples from Iris with atomic postconditions, containing mechanized proofs for our elaborate case study: the Lazy JellyFish skip list, a concurrent map implementation. We also present the proofs for a simpler lazy set data structure to 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.19.1
- Iris 4.2.0### Directory Structure
The `lib/` directory contains definitions and lemmas required for both structures.- `argmax.v`: Definition of and facts about the `argmax` resource algebra.
- `gmap.v`: Additional facts about the `gmap` resource algebra.
- `zrange.v`: Definition of and facts about sets containing a range of integers.The `atomic/` directory contains an alternative definition of logical atomicity in Iris.
- `update.v`: Definition of and facts about atomic updates. We extend the previous definition by defining atomic postconditions.
- `weakestpre.v`: Definition of and facts about atomic triples based on the new definition of atomic updates. These triples also support private postconditions.
- `proofmode.v`: Ensures that the `awp_apply` tactic refers to the new definition for atomic triples.
- `lock.v`: Alternative logically atomic specification for locks without the use of an invariant.The `lazy_list/` and `jelly_fish/` directories contain the proofs for the lazy set and JellyFish map, respectively. Each of these directories is structured as:
- `code.v`: File with code for the data structure.
- `inv.v`: File describing the invariant resources.
- `spec/`: Directory with the proofs of atomic triples for the data structure's logically atomic specification.
- `rw_client/`: Directory with a client specification built from the logically atomic specification. This specification supports read-read and write-write concurrency, as shown by verifying a simple client example.