{"id":20504500,"url":"https://github.com/pkutcs-cbs/a-modeling-language","last_synced_at":"2025-08-02T20:04:18.944Z","repository":{"id":166453901,"uuid":"330322351","full_name":"PKUTCS-CBS/A-Modeling-Language","owner":"PKUTCS-CBS","description":"A toy language for modeling the architecture of cloud block storage","archived":false,"fork":false,"pushed_at":"2021-01-18T03:01:54.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-05T20:55:27.895Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/PKUTCS-CBS.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-01-17T05:35:46.000Z","updated_at":"2023-03-09T12:41:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"c3b9e17e-c316-4da8-8956-36ef8bc5796d","html_url":"https://github.com/PKUTCS-CBS/A-Modeling-Language","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PKUTCS-CBS/A-Modeling-Language","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PKUTCS-CBS%2FA-Modeling-Language","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PKUTCS-CBS%2FA-Modeling-Language/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PKUTCS-CBS%2FA-Modeling-Language/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PKUTCS-CBS%2FA-Modeling-Language/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PKUTCS-CBS","download_url":"https://codeload.github.com/PKUTCS-CBS/A-Modeling-Language/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PKUTCS-CBS%2FA-Modeling-Language/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268447961,"owners_count":24251994,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-11-15T19:38:25.644Z","updated_at":"2025-08-02T20:04:18.893Z","avatar_url":"https://github.com/PKUTCS-CBS.png","language":"Coq","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A Reasoning Tool for the Modeling Language of Block based Cloud Storage\n\nTo improve the reliability of block based cloud storage, we propose using formal methods to verify and reason the storage management. Roughly speaking, formal methods may be divided into Model Checking and Theorem Proving. Considering such distributed systems are very large and complex, we advocate the use of theorem proving in modeling and verification of block based cloud storage.\n\n##### Theorem proving \n\nTheorem proving is a formal verification method where mathematical logic is used to formulate a theorem about the correctness of a design, then a general purpose theorem-prover is used to construct the proof. The theorem can be expressed using first-order logic. On the other hand, relying on the theorem prover by user interaction, the proofs can be conducted mechanically and even automatically.\n\nDeveloping in [Coq](https://coq.inria.fr/), we aim to generate an interactive theorem prover,\n which allows one to state the cloud storage and to prove it interactively. The entire development may be divided into three components. Modeling Language, Assertion Language and Specification Language.\n\n##### HDFS and Separation Logic\n\nWe have focused on the most typical product in Block base Cloud Storage — [Hadoop Distributed File System(HDFS)](https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html). Considering its representative architecture, which the block is a basic storage unit, we extend the Separation Logic to describe the storage. Separation Logic is a general theory for modular reasoning about explicit memory management. It is very suitable for our requirement.\n\n##### Modeling Language\n\nAs the beginning but also the foundation, we define and implement the modeling language in our tool. The so-called modeling is mainly about describing the abstractions of system architecture and program operations, and the effect of program execution on system state.\n\nTo achieve this, we first define the domain of our language as the description of HDFS architecture. Then, a formal syntax of expressions and commands is defined. One may use it to rewrite a simple program to describe the program operations. Finally, we define the semantic of expressions and commands, to describe the effect of program execution on system state.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkutcs-cbs%2Fa-modeling-language","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpkutcs-cbs%2Fa-modeling-language","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkutcs-cbs%2Fa-modeling-language/lists"}