{"id":22202885,"url":"https://github.com/logsem/iris-nextgen","last_synced_at":"2025-03-25T01:47:34.309Z","repository":{"id":187188226,"uuid":"674122304","full_name":"logsem/iris-nextgen","owner":"logsem","description":"Next generation modality for Iris","archived":false,"fork":false,"pushed_at":"2024-12-06T09:02:45.000Z","size":372,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-01-30T03:28:08.060Z","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":"2023-08-03T07:34:24.000Z","updated_at":"2025-01-08T22:02:16.000Z","dependencies_parsed_at":"2025-01-30T03:27:57.912Z","dependency_job_id":"18eee004-f32d-4b67-8713-97420b1fbf8e","html_url":"https://github.com/logsem/iris-nextgen","commit_stats":null,"previous_names":["logsem/iris-nextgen"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logsem%2Firis-nextgen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logsem%2Firis-nextgen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logsem%2Firis-nextgen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logsem%2Firis-nextgen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/logsem","download_url":"https://codeload.github.com/logsem/iris-nextgen/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245383120,"owners_count":20606265,"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:41.426Z","updated_at":"2025-03-25T01:47:34.285Z","avatar_url":"https://github.com/logsem.png","language":"Coq","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⚡️ iris-nextgen\n\nNext generation modality for Iris.\n\nThis directory contains the Coq mechanization accompanying the paper\n\"The Nextgen Modality: A Modality for Non-Frame-Preserving Updates in\nSeparation Logic\".\n\n## Development\n\nThe `main` branch is currently developed using Coq version 8.17.1. and coq-equations version 1.3+8.17\n\n### Clone\n\nThe project uses submodules for its dependencies. To clone it and the\nassociated submodules use the following command:\n\n```\ngit submodule update --init --recursive\n```\n\n### Updating dependencies\n\nThe following git command updates all the submodules:\n\n```\ngit submodule update --remote --merge\n```\n### Building the proofs \n\nWe recommend installing the dependencies using [opam](https://opam.ocaml.org/)\n\nOnce you have installed `Coq 8.17.1` and `coq-equations 1.3+8.17`, you can build the project by running:\n```\nmake -jN  # replace N with the number of CPU cores of your machine\n```\n\n### Organization \n\n#### Below is a high level description of the file structure, and select files.\n\n- `case_study`: contains files specific to StackLang (definition, program logic, and examples).\n\n- `case_study/program_logic`: contains language generic files related to the construction of a program logics that use the nextgen modality.\n\n- `lib`: contains the construction of invariants in the presence of the nextgen modality.\n\n- `gmap_view_transformation.v`: provides a generic methodology to define transformations over the map resource algebra.\n\n- `nextgen_soundness.v`: proves soundness of the nextgen modality as it occurs in the weakest precondition.\n\n- `nextgen_independent.v`: defines the independence modality\n\n#### Below is a lookup table for the definitions in the paper.\n\n| Paper                                        | File or Folder                                                  | Name                                        |\n|----------------------------------------------|-----------------------------------------------------------------|---------------------------------------------|\n| Definition 3.1 (Generational transformation) | `gen_trans.v`                                                   | `GenTrans`                                  |\n| bng-own (Fig 2)                              | `basic_nextgen.v`                                               | `bnextgen_ownM`                             |\n| bng-mono (Fig 2)                             | `basic_nextgen.v`                                               | `bnextgen_mono`                             |\n| bng-conj (Fig 2)                             | `basic_nextgen.v`                                               | `bnextgen_and`                              |\n| bng-disj (Fig 2)                             | `basic_nextgen.v`                                               | `bnextgen_or`                               |\n| bng-later (Fig 2)                            | `basic_nextgen.v`                                               | `bnextgen_later`                            |\n| bng-exists (Fig 2)                           | `basic_nextgen.v`                                               | `bnextgen_exist`                            |\n| bng-forall (Fig 2)                           | `basic_nextgen.v`                                               | `bnextgen_forall`                           |\n| bng-sep (Fig 2)                              | `basic_nextgen.v`                                               | `bnextgen_sep_2`                            |\n| bng-pers (Fig 2)                             | `basic_nextgen.v`                                               | `bnextgen_pers`                             |\n| bng-trans (Fig 2)                            | `basic_nextgen.v`                                               | `bnextgen_compose`                          |\n| bng-idemp (Fig 2)                            | `basic_nextgen.v`                                               | `bnextgen_idemp`                            |\n| bng-plainly (Fig 2)                          | `basic_nextgen.v`                                               | `bnextgen_plainly`                          |\n| bng-sound                                    | `basic_nextgen.v`                                               | `bnextgen_plain_soundness`                  |\n| StackLang syntax (Fig 3)                     | `case_study/stack_lang.v`                                       | `expr`                                      |\n| StackLang step relation (Page 9, Fig 4)      | `case_study/stack_lang.v`                                       | `head_step`                                 |\n| Points-to predicates (Page 9)                | `case_study/rules_unary.v`                                      | `l ↦ v`, `i @@ l ↦ v`, `[size] n`           |\n| Nextgen modality for stack (Page 10)         | `case_study/rules_unary.v`                                      | `next_state`                                |\n| Rules about stack nextgen (Page 10)          | `case_study/rules_unary.v`                                      | `Section heapG_nextgen_updates`             |\n| cut-heap-intro                               | `case_study/rules_unary.v`                                      | `heap_stack_intro`                          |\n| cut-stack-intro                              | `case_study/rules_unary.v`                                      | `stack_stack_pop_intro`                     |\n| cut-size-intro                               | `case_study/rules_unary.v`                                      | `stack_size_frag_intro`                     |\n| Weakest Precondition definition (Fig 5)      | `case_study/program_logic/weakestpre.v`                         | `wp_pre`                                    |\n| Adequacy (Theorem 4.1)                       | `case_study/program_logic/adequacy.v` and `nextgen_soundness.v` | `wp_adequacy_no_lc_single_thread`           |\n| Independence modality (Page 11)              | `nextgen_independent.v`                                         | `uPred_bnextgen_ind`                        |\n| ind-intro                                    | `nextgen_independent.v`                                         | `bnextgen_bounded_ind_GenIndependent_intro` |\n| cut-ind-intro                                | `nextgen_independent.v`                                         | `bnextgen_bounded_ind_bnextgen_intro`       |\n| ind-elim                                     | `nextgen_independent.v`                                         | `bnextgen_bounded_ind_elim`                 |\n| ind-weaken                                   | `nextgen_independent.v`                                         | `bnextgen_bounded_ind_weaken`               |\n| ind-heap-intro                               | `case_study/rules_unary.v`                                      | `heap_stack_ind_intro`                      |\n| ind-stack-intro                              | `case_study/rules_unary.v`                                      | `stack_stack_ind_intro`                     |\n| ind-size-intro                               | `case_study/rules_unary.v`                                      | `stack_size_frag_ind_intro`                 |\n| Frame rule (Page 11)                         | `case_study/program_logic/weakestpre.v`                         | `wp_frame_l`                                |\n| Context-local Weakest Precondition (Page 11) | `case_study/program_logic/cl_weakestpre.v`                      | `clwp`                                      |\n| ClSalloc                                     | `case_study/program_logic/cl_weakestpre.v`                      | `clwp_stack_alloc`                          |\n| Return                                       | `case_study/rules_unary.v`                                      | `wp_return`                                 |\n| inv-alloc                                    | `lib/invariants`                                                | `own_inv_alloc`                             |\n| cut-inv-intro                                | `case_study/rules_unary.v`                                      | `next_state_stack_inv_intro`                |\n| ind-inv-intro                                | `case_study/rules_unary.v`                                      | `next_state_stack_inv_ind_intro`            |\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogsem%2Firis-nextgen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flogsem%2Firis-nextgen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogsem%2Firis-nextgen/lists"}