{"id":13296128,"url":"https://github.com/sr-lab/iris-jellyfish","last_synced_at":"2025-10-25T16:30:43.740Z","repository":{"id":106962400,"uuid":"447934045","full_name":"sr-lab/iris-jellyfish","owner":"sr-lab","description":"Extension of atomic triples in Iris with atomic postconditions and formal verification of the Lazy JellyFish skip list","archived":false,"fork":false,"pushed_at":"2024-09-15T15:15:03.000Z","size":712,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-31T07:51:29.349Z","etag":null,"topics":["concurrent-data-structure","coq","formal-verification","logical-atomicity"],"latest_commit_sha":null,"homepage":"","language":"Coq","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sr-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-14T10:50:43.000Z","updated_at":"2024-09-15T15:15:06.000Z","dependencies_parsed_at":"2024-10-10T21:40:45.389Z","dependency_job_id":"0474117d-ea2d-4a42-a882-acc8837d73cf","html_url":"https://github.com/sr-lab/iris-jellyfish","commit_stats":{"total_commits":139,"total_committers":4,"mean_commits":34.75,"dds":0.03597122302158273,"last_synced_commit":"6703532ad1d5d62b8324bb2af38b0714f5b05a77"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr-lab%2Firis-jellyfish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr-lab%2Firis-jellyfish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr-lab%2Firis-jellyfish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr-lab%2Firis-jellyfish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sr-lab","download_url":"https://codeload.github.com/sr-lab/iris-jellyfish/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238174115,"owners_count":19428628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["concurrent-data-structure","coq","formal-verification","logical-atomicity"],"created_at":"2024-07-29T17:18:33.373Z","updated_at":"2025-10-25T16:30:43.412Z","avatar_url":"https://github.com/sr-lab.png","language":"Coq","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Atomic Postconditions: Resourceful Reasoning beyond Linearization Points\n## Formal Verification of the Lazy JellyFish Skip List in Iris\n\nArtifact 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`.\n\n\n### Prerequisites\nThis development is known to compile with\n\n- Coq 8.19.1\n- Iris 4.2.0\n\n\n### Directory Structure\nThe `lib/` directory contains definitions and lemmas required for both structures.\n\n- `argmax.v`: Definition of and facts about the `argmax` resource algebra.\n- `gmap.v`: Additional facts about the `gmap` resource algebra.\n- `zrange.v`: Definition of and facts about sets containing a range of integers.\n\nThe `atomic/` directory contains an alternative definition of logical atomicity in Iris.\n\n- `update.v`: Definition of and facts about atomic updates. We extend the previous definition by defining atomic postconditions.\n- `weakestpre.v`: Definition of and facts about atomic triples based on the new definition of atomic updates. These triples also support private postconditions.\n- `proofmode.v`: Ensures that the `awp_apply` tactic refers to the new definition for atomic triples.\n- `lock.v`: Alternative logically atomic specification for locks without the use of an invariant.\n\nThe `lazy_list/` and `jelly_fish/` directories contain the proofs for the lazy set and JellyFish map, respectively. Each of these directories is structured as:\n\n- `code.v`: File with code for the data structure.\n- `inv.v`: File describing the invariant resources.\n- `spec/`: Directory with the proofs of atomic triples for the data structure's logically atomic specification.\n- `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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsr-lab%2Firis-jellyfish","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsr-lab%2Firis-jellyfish","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsr-lab%2Firis-jellyfish/lists"}