{"id":11149161,"url":"https://github.com/CertiGraph/CertiGraph","last_synced_at":"2025-09-21T16:33:14.696Z","repository":{"id":40264687,"uuid":"275549418","full_name":"CertiGraph/CertiGraph","owner":"CertiGraph","description":"A library for verifying graph-manipulating programs. Powered by Coq and VST. Compatible with CompCert.","archived":false,"fork":false,"pushed_at":"2024-05-24T10:00:03.000Z","size":138817,"stargazers_count":16,"open_issues_count":5,"forks_count":5,"subscribers_count":10,"default_branch":"live","last_synced_at":"2024-06-13T18:03:08.954Z","etag":null,"topics":["compcert","coq","graph-algorithms","vst"],"latest_commit_sha":null,"homepage":"","language":"Coq","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CertiGraph.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":"2020-06-28T09:17:58.000Z","updated_at":"2024-06-13T18:03:13.442Z","dependencies_parsed_at":"2023-10-04T05:24:16.102Z","dependency_job_id":"a5a247ad-f06f-46cc-b5a1-882ffe8b6013","html_url":"https://github.com/CertiGraph/CertiGraph","commit_stats":null,"previous_names":["salamari/certigraph"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CertiGraph%2FCertiGraph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CertiGraph%2FCertiGraph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CertiGraph%2FCertiGraph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CertiGraph%2FCertiGraph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CertiGraph","download_url":"https://codeload.github.com/CertiGraph/CertiGraph/tar.gz/refs/heads/live","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233773739,"owners_count":18728075,"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":["compcert","coq","graph-algorithms","vst"],"created_at":"2024-06-13T17:13:04.407Z","updated_at":"2025-09-21T16:33:09.140Z","avatar_url":"https://github.com/CertiGraph.png","language":"Coq","readme":"# CertiGraph\n\nA library for verifying graph-manipulating programs.\n\nPowered by [Coq](https://coq.inria.fr) and [VST](https://vst.cs.princeton.edu/). Compatible with [CompCert](https://compcert.org/).\n\nThe [OVERVIEW](OVERVIEW.md) describes what it's for, and the [demo](demo) gives a brief tutorial introduction.\n\nThis version of CertiGraph is compatible with Coq 8.13 (and probably 8.14), CompCert 3.9, and VST 2.8.\n\n## Contributors\n\n* Aquinas Hobor\n* Shengyi Wang\n* Anshuman Mohan\n\n\n## Papers\n\n* [Functional Correctness of C Implementations of Dijkstra's, Kruskal's, and Prim's Algorithms](https://doi.org/10.1007/978-3-030-81688-9_37) (CAV 2021). Aquinas Hobor, Anshuman Mohan, Wei Xiang Leow.\n* [Mechanized verification of graph-manipulating programs](https://www.comp.nus.edu.sg/~hobor/Teaching/SW-PhD.pdf) (Thesis). Shengyi Wang.\n* [A Machine-Checked C Implementation of Dijkstra's Shortest Path Algorithm](https://www.comp.nus.edu.sg/~hobor/Publications/2020/CertifiedDijkstra.pdf). Aquinas Hobor, Anshuman Mohan, Shengyi Wang.\n* [Certifying Graph-Manipulating C Programs via Localizations within Data Structures](https://doi.org/10.1145/3360597) (OOPSLA 2019). Aquinas Hobor, Shengyi Wang, Qinxiang Cao, Anshuman Mohan.\n\n\n## Installing\n\nThe library can be installed using [opam](https://opam.ocaml.org/). Different packages are offered for different target architectures. You can install multiple targets side-by-side.\n\n### `x86_64-linux`\n\n```console\n$ opam install ./coq-certigraph.opam\n```\n\n### `x86_32-linux`\n\n```console\n$ opam install ./coq-certigraph-32.opam\n```\n\n\n## Building without installing\n\nIt is possible to build CertiGraph without installing it as a library. This is useful if you simply want to check out the examples or if you want to hack on CertiGraph itself.\n\n### `x86_64-linux`\n\nFirst, make sure you have all of the dependencies. \n\n1. This can be done via opam:\n```console\n$ opam install --deps-only ./coq-certigraph.opam\n```\n\n2. Alternatively, you can fetch and compile the dependencies by hand. In that case, be sure to edit the `CONFIGURE` file to specify the path to CompCert and/or VST.\n\n3. Or, if your [Coq Platform](https://github.com/coq/platform) install includes CompCert and VST, then you may already have all the needed libraries.\n\nOnce the dependencies are in place you can perform the build:\n\n```console\n$ make clean\n$ make depend\n$ make -j4\n```\n\n### `x86_32-linux`\n\nFirst, make sure you have all of the dependencies. \n\n1. This can be done via opam:\n```console\n$ opam install --deps-only ./coq-certigraph-32.opam\n```\n\n2. Alternatively, you can fetch and compile the dependencies by hand. In that case, be sure to edit the `CONFIGURE` file to specify the path to CompCert and/or VST.\n\n3. Or, if your [Coq Platform](https://github.com/coq/platform) install includes CompCert and VST, then you may already have all the needed libraries.\n\nOnce the dependencies are in place you can perform the build:\n\n```console\n$ make BITSIZE=32 clean\n$ make BITSIZE=32 depend\n$ make BITSIZE=32 -j4\n```\n\n\n## Developing within CertiGraph\n\n1. Add your C source and clightgen output to the CertiGraph directory:\n\t1. Write your `newfile.c` inside CertiGraph.\n\t1. `path_to_clightgen/clightgen -DCOMPCERT -normalize -isystem . newfile.c`\n\t1. Add `newfile.v` to the list of sources in `Makefile`\n\t1. `make depend` (this is for every time you edit the makefile)\n\t1. `make path_to_newfile/newfile.vo` (note the .vo)\n1. Create the file `verif_newfile.v`. Now something like `Require Import CertiGraph.path.to.newfile.` will go through inside `verif_newfile.v`.\n","funding_links":[],"categories":["Projects"],"sub_categories":["Libraries"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCertiGraph%2FCertiGraph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCertiGraph%2FCertiGraph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCertiGraph%2FCertiGraph/lists"}