{"id":22202889,"url":"https://github.com/logsem/axsl","last_synced_at":"2025-03-25T01:47:35.154Z","repository":{"id":206937474,"uuid":"718034177","full_name":"logsem/AxSL","owner":"logsem","description":"AxSL, a concurrent separation logic for Arm's relaxed concurrency","archived":false,"fork":false,"pushed_at":"2024-10-10T04:35:03.000Z","size":387,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-30T03:28:08.016Z","etag":null,"topics":["arm","concurrency","separation-logic","verification"],"latest_commit_sha":null,"homepage":"","language":"Coq","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/logsem.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2023-11-13T08:31:52.000Z","updated_at":"2024-10-10T04:35:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"fd15fd02-0872-4fb5-a87d-7d3b27178afd","html_url":"https://github.com/logsem/AxSL","commit_stats":null,"previous_names":["logsem/axsl"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logsem%2FAxSL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logsem%2FAxSL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logsem%2FAxSL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logsem%2FAxSL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/logsem","download_url":"https://codeload.github.com/logsem/AxSL/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":["arm","concurrency","separation-logic","verification"],"created_at":"2024-12-02T16:38:43.167Z","updated_at":"2025-03-25T01:47:35.135Z","avatar_url":"https://github.com/logsem.png","language":"Coq","funding_links":[],"categories":[],"sub_categories":[],"readme":"This repository contains the Coq mechanisation of the Arm-A instance of AxSL, \nan Iris-based program logic for Arm-A relaxed concurrency.\n\n## Building the Project\n\nThe project can be compiled using the OCaml building system `dune` with required denpendencies installed.\nThe building scripts are organised into `dune-project` and severnal `dune` files.\n\nRefer to `INSTALL.md` for more information on building it in a Docker environment or\nmanually.\n\n## Structure of the Development\n\nThe Coq development is organised into two subdirectories.\n\nThe `theories` directory contains the primary Coq development of the work, including:\n\n- `lang`: This directory contains definitions of instructions, the Arm memory model, and our opax \nsemantics.\n  - `lang/instrs.v` defines the semantics of instructions using the outcome interface.\n  - `lang/mm.v` (combined with `CandidateExecutions.v`) defines the (user) Arm memory model.\n  - `lang/opsem.v` defines the opax semantics.\n\n- `algebra`: This directory includes most of the ghost state constructions for the logical assertions \nof `AxSL`.\n\n- `low`: This directory contains the definition of weakest preconditions, the soundness proof of \nlow-level proof rules, and the adequacy theorem.\n  - `low/weakestpre.v` defines the base weakest precondition that is parameterised by the implementation \n  of state interpretation. It also contains the definition of flow implications.\n  - `low/instantiation.v` and `low/*_res.v` contains the instantiation of the base weakest precondition with a specific \n  state interpretation implementation.\n  - `low/rules/*.v` contain base proof rules and their soundness proofs.\n  - `low/lifting.v` and `low/adequacy.v` contain the adequacy proof with respect to the base weakest \n  precondition.\n\n- `middle`: This directory contains the proof rules for all microinstructions and abstraction layers.\n  - `middle/weakestpre.v` defines an abstraction layer based on low-level weakest preconditions.\n  - `middle/rules.v` contains proof rules for some instructions and their soundness proofs (utilising \n  the results of `low/rules/*.v`).\n  - `middle/excl.v` contains our solution for supporting exclusives.\n  - `middle/specialised_rules.v` contains proof rules for specific instructions used in verified examples\n  and their soundness proofs.\n\n- `examples`: This directory contains the examples.\n  - `examples/lb/` includes four variants of load-buffering and their proofs.\n  - `examples/mp/` contains four variants of message-passing and their proofs.\n  - `examples/isa2/` contains a variant of ISA2 and its proofs.\n  - `examples/co/` contains two coherence examples and their proofs.\n  - `examples/try_lock/` contains an implementation of try lock using exclusives, a mutual exclusion example using the lock, and their proofs.\n\nThe `system-semantics` directory contains the Coq infrastructure used to define and reason about \nmemory models, including:\n\n- `ISASem`: This directory contains the ISA semantics interface that models may use.\n  - `ISASem/Interface.v` defines the main concurrency interface.\n  - `ISASem/ArmInst.v` and `ISASem/SailArmInstTypes.v` together define the Arm instantiation of the \n  interface, which is used to define the Arm memory model.\n\n- `Common`: This directory contains standard-library-like features, support type definitions, and \nautomation helpers.\n  - `Common/GRel.v` contains an implementation of relations and operations for relation algebra.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogsem%2Faxsl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flogsem%2Faxsl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogsem%2Faxsl/lists"}