{"id":13657493,"url":"https://github.com/au-ts/cogent","last_synced_at":"2026-02-24T12:18:35.913Z","repository":{"id":37841482,"uuid":"57856585","full_name":"au-ts/cogent","owner":"au-ts","description":"Cogent Project","archived":false,"fork":false,"pushed_at":"2025-03-18T05:06:36.000Z","size":18083,"stargazers_count":163,"open_issues_count":102,"forks_count":27,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-04-24T01:42:08.261Z","etag":null,"topics":["co-generation","file-systems","isabelle-hol","programming-languages","verification"],"latest_commit_sha":null,"homepage":"https://trustworthy.systems/projects/TS/cogent.pml","language":"Isabelle","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/au-ts.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE_BSD2.txt","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":"2016-05-01T23:35:59.000Z","updated_at":"2025-04-22T13:19:50.000Z","dependencies_parsed_at":"2025-04-04T08:11:49.939Z","dependency_job_id":null,"html_url":"https://github.com/au-ts/cogent","commit_stats":null,"previous_names":["nicta/cogent"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/au-ts/cogent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/au-ts%2Fcogent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/au-ts%2Fcogent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/au-ts%2Fcogent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/au-ts%2Fcogent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/au-ts","download_url":"https://codeload.github.com/au-ts/cogent/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/au-ts%2Fcogent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29782026,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T10:45:18.109Z","status":"ssl_error","status_checked_at":"2026-02-24T10:45:09.911Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["co-generation","file-systems","isabelle-hol","programming-languages","verification"],"created_at":"2024-08-02T05:00:43.932Z","updated_at":"2026-02-24T12:18:35.896Z","avatar_url":"https://github.com/au-ts.png","language":"Isabelle","funding_links":[],"categories":["Isabelle (1)"],"sub_categories":[],"readme":"[![Build Status](https://github.com/au-ts/cogent/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/au-ts/cogent/actions/workflows/ci.yml)\n[![Documentation Status](https://readthedocs.org/projects/cogent/badge/?version=latest)](https://cogent.readthedocs.io/en/latest/?badge=latest)\n\n# Cogent: Code and Proof Co-Generation\n\n## Project homepage\n\nFor general context of this project, motivation, an overview, and published papers, see\nour [project homepage](https://trustworthy.systems/projects/TS/cogent.pml).\n\n## Online documentation\n\nhttps://cogent.readthedocs.io\n\n## Installation\n\nInstructions tested on Debian GNU/Linux 9.8 (\"stretch\") and Ubuntu 18.04 (\"bionic\"). Similar distributions may also work.\n\nInstall dependencies from the Debian repository.\n```\nsudo apt-get install git # git\nsudo apt-get install python-lxml python-psutil python-pycparser # regression tester\n```\n\nTo install the Cogent compiler, consult file [cogent/README.md](./cogent/README.md) for details. \n\nThe Cogent framework depends on [Isabelle-2019](https://isabelle.in.tum.de/).\nIf you already have them on your machine, you can use your local copy.\nOtherwise you can either obtain it from their website or from the `isabelle` submodule, via\n`git submodule update --init --recursive -- isabelle`.\n\nAdd `isabelle/bin` to your PATH: `export PATH=\"$(pwd)/isabelle/bin:$PATH\"`\nIf you have an existing Isabelle install, you may want to set `ISABELLE_IDENTIFIER` instead of `PATH`.\n\nInitialise Isabelle and install components:\n```\nisabelle components -I\nisabelle components -a\n```\nConsult [Isabelle manual](https://isabelle.in.tum.de/documentation.html) for more information.\n\nFor more customised settings to run proofs and regression tests, modify [`build-env.sh`](build-env.sh).\n\nNote: also see [Proofs](#proofs) and [Regression tests](#regression-tests) below.\n\n\n## Compiler\n\nSee [cogent/README.md](./cogent/README.md) for more information.\n\n\n## File systems\n\nSee [impl/fs/ext2/README](./impl/fs/ext2/README) and [impl/fs/bilby/README](./impl/fs/bilby/README) for more information on how to build the kernel modules.\n\n\n## Proofs\n\nFirstly, download the AutoCorres release v1.6.1 from [https://trustworthy.systems/projects/TS/autocorres](https://trustworthy.systems/projects/TS/autocorres/),\nmove the extracted folder to this directory, and rename the folder to `autocorres`.\n\nTo build the proofs, it is recommended that your machine (or virtual machine)\nprovides 32G of memory and 4–8 CPU threads.\n\n```\n# Build compilation correctness proof for ext2. (ETA: 120 CPU hours)\n(cd impl/fs/ext2/cogent;\n make verification;\n export L4V_ARCH=\"ARM\";\n isabelle build -d plat/verification -d ../../../../cogent/isa -d ../../../../autocorres -b Ext2_AllRefine)\n\n# Build compilation correctness proof for BilbyFs. (ETA: 120 CPU hours)\n(cd impl/fs/bilby/cogent;\n make verification;\n patch -d plat/verification \u003c ../../../../BilbyFs_CorresProof.patch;\n export L4V_ARCH=\"ARM\";\n isabelle build -d plat/verification -d ../../../../cogent/isa -d ../../../../autocorres -b -o process_output_limit=999 BilbyFs_AllRefine)\n\n# View end-to-end theorems. Each theory has a \"print_theorems\" command for this.\n# For ext2:\nL4V_ARCH=\"ARM\" isabelle jedit -d impl/ext2/cogent/plat/verification -d cogent/isa -d autocorres -l Ext2_CorresProof impl/fs/ext2/cogent/plat/verification/Ext2_AllRefine.thy\n# For BilbyFs:\nL4V_ARCH=\"ARM\" isabelle jedit -d impl/fs/bilby/cogent/plat/verification -d cogent/isa -d autocorres -l BilbyFs_CorresProof impl/fs/bilby/cogent/plat/verification/BilbyFs_AllRefine.thy\n```\n\nThe functional correctness proofs for BilbyFs's `sync` and `iget` operations are in\n`impl/fs/bilby/proof/`.\nThey are built as part of the [regression tests](#regression-tests), and can be rebuilt with\n\n```\nregression/run_tests.py -x autocorres -x isabelle -v sync iget\n```\n\n\n## Regression tests (for developers; ETA: 2–3 CPU hours)\n\nFor testing the compiler, refer to [travis.yml](./travis.yml) for commands.\n\nRun `./run_tests` to test systems implementations and parts of their Isabelle proofs.\n\nFor C-refinement proofs, which are excluded from the regression tests because of\ntheir size, follow instructions in [Proofs](#proofs) section.\n\n\n## Directory\n\n* `cogent`: Cogent compiler\n* `c-refinement`: Isabelle/HOL theories and proof procedures for Cogent-C refinement\n  * `tests`: Cogent test programs for proof procedures\n* `isa-parser`: Haskell library for parsing and pretty-printing Isabelle/HOL\n* `impl`: Systems implemented in Cogent\n  * `fs`: File systems\n    * `bilby`: Bilby file system\n      * `cogent`: Cogent code for BilbyFs\n      * `c`: C implementation for BilbyFs\n      * `proof`: Functional correctness specs and proofs for BilbyFs\n    * `ext2`: ext2 file system\n      * `cogent`: Cogent code for ext2\n* `regression`: Regression test script\n\n\n## The Gencot Tool\n\nGencot is a tool for translating C code to Cogent. It's developed by our collaborators.\nThe repository is hosted on [Github](https://github.com/F1-C0D3/gencot). See the\nREADME file and the documentation for more details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fau-ts%2Fcogent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fau-ts%2Fcogent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fau-ts%2Fcogent/lists"}