{"id":21538714,"url":"https://github.com/rocq-community/regexp-Brzozowski","last_synced_at":"2025-07-16T10:32:37.588Z","repository":{"id":22032443,"uuid":"25360604","full_name":"coq-community/regexp-Brzozowski","owner":"coq-community","description":"Coq formalization of decision procedures for regular expression equivalence [maintainer=@anton-trunov]","archived":false,"fork":false,"pushed_at":"2024-07-22T11:53:44.000Z","size":260,"stargazers_count":12,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-07-22T14:09:21.818Z","etag":null,"topics":["coq","docker-coq-action","mathcomp","ssreflect"],"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/coq-community.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":"2014-10-17T13:58:19.000Z","updated_at":"2024-07-22T11:53:45.000Z","dependencies_parsed_at":"2024-07-22T13:51:51.912Z","dependency_job_id":"e9626950-2d4a-4d1d-8c55-4b52c5f193df","html_url":"https://github.com/coq-community/regexp-Brzozowski","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coq-community%2Fregexp-Brzozowski","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coq-community%2Fregexp-Brzozowski/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coq-community%2Fregexp-Brzozowski/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coq-community%2Fregexp-Brzozowski/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coq-community","download_url":"https://codeload.github.com/coq-community/regexp-Brzozowski/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226122726,"owners_count":17576928,"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":["coq","docker-coq-action","mathcomp","ssreflect"],"created_at":"2024-11-24T04:13:16.109Z","updated_at":"2025-07-16T10:32:37.203Z","avatar_url":"https://github.com/coq-community.png","language":"Coq","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!---\nThis file was generated from `meta.yml`, please do not edit manually.\nFollow the instructions on https://github.com/coq-community/templates to regenerate.\n---\u003e\n# Regexp Brzozowski\n\n[![Docker CI][docker-action-shield]][docker-action-link]\n[![Contributing][contributing-shield]][contributing-link]\n[![Code of Conduct][conduct-shield]][conduct-link]\n[![Zulip][zulip-shield]][zulip-link]\n[![DOI][doi-shield]][doi-link]\n\n[docker-action-shield]: https://github.com/coq-community/regexp-Brzozowski/actions/workflows/docker-action.yml/badge.svg?branch=master\n[docker-action-link]: https://github.com/coq-community/regexp-Brzozowski/actions/workflows/docker-action.yml\n\n[contributing-shield]: https://img.shields.io/badge/contributions-welcome-%23f7931e.svg\n[contributing-link]: https://github.com/coq-community/manifesto/blob/master/CONTRIBUTING.md\n\n[conduct-shield]: https://img.shields.io/badge/%E2%9D%A4-code%20of%20conduct-%23f15a24.svg\n[conduct-link]: https://github.com/coq-community/manifesto/blob/master/CODE_OF_CONDUCT.md\n\n[zulip-shield]: https://img.shields.io/badge/chat-on%20zulip-%23c1272d.svg\n[zulip-link]: https://coq.zulipchat.com/#narrow/stream/237663-coq-community-devs.20.26.20users\n\n\n[doi-shield]: https://zenodo.org/badge/DOI/10.1007/978-3-642-25379-9_11.svg\n[doi-link]: https://doi.org/10.1007/978-3-642-25379-9_11\n\nCoq library that formalizes decision procedures for regular\nexpression equivalence, using the Mathematical Components\nlibrary. The formalization builds on Brzozowski's derivatives\nof regular expressions for correctness.\n\n## Meta\n\n- Author(s):\n  - Thierry Coquand (initial)\n  - Vincent Siles (initial)\n- Coq-community maintainer(s):\n  - Anton Trunov ([**@anton-trunov**](https://github.com/anton-trunov))\n- License: [MIT License](LICENSE)\n- Compatible Coq versions: 8.16 or later\n- Additional dependencies:\n  - [MathComp](https://math-comp.github.io) 2.0.0 or later (`ssreflect` suffices)\n  - [RegLang](https://github.com/coq-community/reglang) 1.2.0 or later\n- Coq namespace: `RegexpBrzozowski`\n- Related publication(s):\n  - [A Decision Procedure for Regular Expression Equivalence in Type Theory](https://link.springer.com/chapter/10.1007%2F978-3-642-25379-9_11) doi:[10.1007/978-3-642-25379-9_11](https://doi.org/10.1007/978-3-642-25379-9_11)\n\n## Building and installation instructions\n\nThe easiest way to install the latest released version of Regexp Brzozowski\nis via [OPAM](https://opam.ocaml.org/doc/Install.html):\n\n```shell\nopam repo add coq-released https://coq.inria.fr/opam/released\nopam install coq-regexp-brzozowski\n```\n\nTo instead build and install manually, do:\n\n``` shell\ngit clone https://github.com/coq-community/regexp-Brzozowski.git\ncd regexp-Brzozowski\nmake   # or make -j \u003cnumber-of-cores-on-your-machine\u003e \nmake install\n```\n\n\n## Documentation\n\nThe [paper](https://link.springer.com/chapter/10.1007%2F978-3-642-25379-9_11) on the\nformalization was written at Chalmers, in the ForMath Project. More information about\nthe project and its achievements is available on the Chalmers website:\n- http://wiki.portal.chalmers.se/cse/pmwiki.php/ForMath\n- http://wiki.portal.chalmers.se/cse/pmwiki.php/ForMath/PapersAndSlides\n\nOverview of the Coq files:\n- `glue.v`: Basic definitions and lemmas.\n- `regexp.v`: Description and properties of regular expressions.\n- `gfinset.v`: Alternative definition of finite sets.\n- `finite_der.v`: The main proof that the set of derivatives of a regular\n  expression is finite. The proof uses an abstract notion of similarity\n  with the Brzozowski requirements.\n- `equiv.v`: Description of the equivalence procedure and proof of its correctness.\n  In case of non-equivalence, we also produce a witness which is recognized by the\n  first language but not by the second.\n- `sim1.v`: Naive implementation of similarity checking (by double inclusion), with\n  only Brzozowski simplifications.\n- `sim2.v`: More efficient implementation of similarity checking (with a \"compilation\"\n  of regular expressions) which implements many more simplifications.\n- `ex.v`: A few test cases which allow comparing the decision procedures in `sim1.v`\n  and `sim2.v` inside Coq.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocq-community%2Fregexp-Brzozowski","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frocq-community%2Fregexp-Brzozowski","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocq-community%2Fregexp-Brzozowski/lists"}