{"id":22202881,"url":"https://github.com/logsem/spirea","last_synced_at":"2025-09-07T17:39:17.633Z","repository":{"id":180712204,"uuid":"341485240","full_name":"logsem/spirea","owner":"logsem","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-01T12:51:12.000Z","size":3683,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-11-01T13:34:53.331Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Coq","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/logsem.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2021-02-23T08:39:18.000Z","updated_at":"2023-12-10T05:05:08.000Z","dependencies_parsed_at":"2023-07-12T17:01:33.983Z","dependency_job_id":"4c895b44-1843-4655-8951-19a75773dbe9","html_url":"https://github.com/logsem/spirea","commit_stats":null,"previous_names":["logsem/spirea"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logsem%2Fspirea","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logsem%2Fspirea/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logsem%2Fspirea/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logsem%2Fspirea/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/logsem","download_url":"https://codeload.github.com/logsem/spirea/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227763359,"owners_count":17816170,"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":[],"created_at":"2024-12-02T16:38:39.910Z","updated_at":"2024-12-02T16:38:40.459Z","avatar_url":"https://github.com/logsem.png","language":"Coq","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spirea\n\n## Overview of the development\n\n* [`lang`](src/lang) - The definition of the language.\n  * [`lang/syntax.v`](src/lang/syntax.v) - Syntax of the language.\n  * [`lang/memory.v`](src/lang/memory.v) - Semantics of the memory subsystem.\n  * [`lang/lang.v`](src/lang/lang.v) - Semantics of the language.\n* [`algebra`](src/algebra) - Resource algebras.\n  * [`algebra/view.v`](src/algebra/view.v) - The resource algebra of views. Used\n    pervasively.\n* [`base`](src/base) - The low-level program logic. The instantiation of the Iris and\n  Perennial program logic, the base post crash modality, etc.\n  * [`base/adequacy.v`](src/base/adequacy.v) - The adequacy result for the recovery weakest\n    precondition of the base logic.\n  * [`base/primitive_laws.v`](src/base/primitive_laws.v) - Contains, among other things, the state\n    interpretation used in the base logic.\n* [`high`](src/high) - The high-level logic. The definition of `dprop`, `wp`, etc.\n  * [`high/dprop.v`](src/high/dprop.v) - Defines the domain of propositions _dProp_.\n  * [`high/resources`](src/high/resources) - Contains some of the resource algebras/CAMERAs used in\n  * [`high/recovery_weakestpre.v`](src/high/recovery_weakestpre.v) - The\n    definition of the recovery weakest precondition in the high-level logic as\n    well as the proof of the idempotence rule.\n  * [`high/weakestpre_na.v`](src/high/weakestpre_na.v) - WP lemmas about\n    _non-atomic_ location.\n  * [`high/weakestpre_at.v`](src/high/weakestpre_at.v) - WP lemmas about\n    _atomic_ location.\n* [`extra`.v](src/extra.v) - Auxiliary definitions and lemmas that are not\n  specific to the logic.\n* [`examples`](src/examples) - Contains examples.\n\n## Correspondence to OOPSLA 23 paper\n\nThe rules in Figure 5.\n\n| Rule                      | Coq                                                                   |\n|---------------------------|-----------------------------------------------------------------------|\n| lb-knowledge              | `store_lb_persistent`, `flush_lb_persistent`, `persist_lb_persistent` |\n| lb-persistent-flush-store | `persist_lb_to_flush_lb` and `flush_lb_to_store_lb`                   |\n| obj-noflush-nobuffer      | `buffer_free_objective` and `flush_free_objective`                    |\n| mapsto-store-lb           | `mapsto_na_store_lb` and `mapsto_at_store_lb`                         |\n| mapsto-lb-pers            | `mapsto_na_persist_lb`                                                |\n| mapsto-na-store-lb        | `mapsto_na_store_lb_incl`                                             |\n| post-fence-no-flush       | `post_fence_no_flush`                                                 |\n| pfs-pf                    | `post_fenc_sync_post_fence`                                           |\n| rec-in-if-rec             | `crashed_in_if_rec`                                                   |\n| PC-na-mapsto              | `post_crash_mapsto_na`                                                |\n| PC-at-mapsto              | `post_crash_mapsto_at`                                                |\n| PC-invariant              | `post_crash_know_protocol`                                            |\n| PC-PCF                    | `post_crash_flush_post_crash`                                         |\n| PC-persist-lb             | `post_crash_persist_lb`                                               |\n| PCF-flush-lb              | `post_crash_flush_flush_lb`                                           |\n| rec-in-agree              | `crashed_in_agree`                                                    |\n\nThe rules in Figure 6.\n\n| Rule          | Coq                                  |\n|---------------|--------------------------------------|\n| Ht-flush      | `wp_flush_lb`                        |\n| Ht-fence-sync | `wp_fence_sync`                      |\n| Ht-fence      | `wp_fence` and `wp_fence_prop`       |\n| Ht-na-alloc   | `wp_alloc_na`                        |\n| Ht-at-alloc   | `wp_alloc_at`                        |\n| Ht-na-read    | `wp_load_na`                         |\n| Ht-na-write   | `wp_store_na`                        |\n| Ht-at-read    | `wp_load_at` and `wp_load_at_simple` |\n| Ht-at-write   | `wp_store_at`                        |\n\n## Development\n\nThe `main` branch is currently developed using Coq version 8.17.1.\n\n### Clone\n\nThe project uses submodules. To clone it and the associated submodules use the\nfollowing command:\n\n```\ngit submodule update --init --recursive\n```\n\n### Updating dependencies\n\nThe dependencies are included as git submodules.\n\nThe following git command updates all the dependencies (the option `--recursive\n` may be necessary as well but it seems to not be the case):\n\n```\ngit submodule update --remote --merge\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogsem%2Fspirea","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flogsem%2Fspirea","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogsem%2Fspirea/lists"}