{"id":20859383,"url":"https://github.com/engineeringsoftware/mcoq","last_synced_at":"2025-05-12T08:32:26.121Z","repository":{"id":114019229,"uuid":"234365176","full_name":"EngineeringSoftware/mcoq","owner":"EngineeringSoftware","description":"Mutation analysis tool for Coq verification projects","archived":false,"fork":false,"pushed_at":"2020-10-13T18:54:06.000Z","size":1992,"stargazers_count":30,"open_issues_count":4,"forks_count":1,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-01T04:27:53.227Z","etag":null,"topics":["coq","mutation-analysis","serapi"],"latest_commit_sha":null,"homepage":"https://cozy.ece.utexas.edu/mcoq/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EngineeringSoftware.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}},"created_at":"2020-01-16T16:42:42.000Z","updated_at":"2024-10-30T08:04:40.000Z","dependencies_parsed_at":"2023-05-22T04:45:18.489Z","dependency_job_id":null,"html_url":"https://github.com/EngineeringSoftware/mcoq","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineeringSoftware%2Fmcoq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineeringSoftware%2Fmcoq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineeringSoftware%2Fmcoq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineeringSoftware%2Fmcoq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EngineeringSoftware","download_url":"https://codeload.github.com/EngineeringSoftware/mcoq/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253702134,"owners_count":21949924,"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","mutation-analysis","serapi"],"created_at":"2024-11-18T04:49:41.285Z","updated_at":"2025-05-12T08:32:25.404Z","avatar_url":"https://github.com/EngineeringSoftware.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mCoq: Mutation Analysis for Coq\n\nmCoq is a tool for mutation analysis of verification projects that use the\n[Coq proof assistant](https://coq.inria.fr).\n\nmCoq applies a set of mutation operators to Coq definitions, generating\nmodified versions, called mutants, of the project. If all proofs of a\nmutant are successfully checked, a mutant is declared live; otherwise it\nis declared killed. mCoq produces HTML reports pinpointing both live and\nkilled mutants in the Coq code, where live mutants may indicate\nincomplete specifications. Our original [research paper][ase-paper] provides more\ninformation on the technique and optimizations that mCoq implements.\n\nIf you have used mCoq in a research project, please cite our\n[tool paper][icse-demo-paper] in any related publications:\n```bibtex\n@inproceedings{JainETAL20mCoqTool,\n  author = {Jain, Kush and Palmskog, Karl and Celik, Ahmet and\n    Gallego Arias, Emilio Jes{\\'u}s and Gligoric, Milos},\n  title = {{mCoq}: Mutation Analysis for {C}oq Verification Projects},\n  booktitle = {International Conference on Software Engineering,\n    Tool Demonstrations Track},\n  pages = {To appear},\n  year = {2020},\n}\n```\n\n[ase-paper]: https://users.ece.utexas.edu/~gligoric/papers/CelikETAL19mCoq.pdf\n[icse-demo-paper]: http://users.ece.utexas.edu/~gligoric/papers/JainETAL20mCoqTool.pdf\n\n## Requirements\n\n- [OCaml 4.07.1](https://ocaml.org)\n- [Coq 8.10.2](https://coq.inria.fr/download)\n- [SerAPI 0.7.0](https://github.com/ejgallego/coq-serapi)\n- [Python 3](https://www.python.org)\n- [JDK 8](https://openjdk.java.net) (or later)\n- [Gradle 6](https://gradle.org/install/)\n- [Git](https://git-scm.com)\n\n## Installation\n\nWe strongly recommend installing the required versions of OCaml, Coq,\nand SerAPI via the [OPAM package manager](https://opam.ocaml.org),\nversion 2.0.5 or later.\n\nTo set up the OPAM-based OCaml environment, use:\n```\nopam switch create 4.07.1\nopam switch 4.07.1\neval $(opam env)\n```\nThen, install Coq and SerAPI, pinning them to avoid unintended upgrades:\n```\nopam update\nopam pin add coq 8.10.2\nopam pin add coq-serapi 8.10.0+0.7.0\n```\nNext, clone the mCoq repository and enter the directory:\n```\ngit clone https://github.com/EngineeringSoftware/mcoq.git\ncd mcoq\n```\n\nThe entry point for using mCoq is the `mcoq.py` script. To see\nthe available options, use:\n```\n./mcoq.py --help\n```\n\nThe tool currently assumes that all project Coq source\nfiles to be mutated are listed in the `_CoqProject` file\nin a Coq project's root directory.\n\nBefore performing mutations, the script will automatically check\nthat all mCoq dependencies are present. To disable these checks,\npass the option `--nocheck`.\n\n## Usage example\n\nTo apply mCoq to [StructTact][structtact-repo]\nrevision [`82a85b7`][structtact-revision], run:\n```\n./mcoq.py --project StructTact --threads 2 --sha 82a85b7 \\\n  --url https://github.com/uwplse/StructTact.git \\\n  --buildcmd \"./configure \u0026\u0026 make -j2\" --qdir \".,StructTact\"\n```\nAfter running this command, the HTML report is available in the\n`reports/results/StructTact` directory. We also provide the corresponding report\nfor [online viewing][structtact-report].\n\nFor large Coq projects, we recommend setting the `--threads` option\nto at least the number of CPU cores in the machine, since mutation analysis\nmay otherwise take a very long time to complete.\n\n[structtact-repo]: https://github.com/uwplse/StructTact\n[structtact-revision]: https://github.com/uwplse/StructTact/commit/82a85b7ec07e71fa6b30cfc05f6a7bfb09ef2510\n[structtact-report]: https://cozy.ece.utexas.edu/mcoq/report/\n\n## Authors\n\n- [Ahmet Celik](https://ahmet-celik.github.io)\n- [Emilio Jesús Gallego Arias](https://www.irif.fr/~gallego/)\n- [Milos Gligoric](http://users.ece.utexas.edu/~gligoric/)\n- Kush Jain\n- [Karl Palmskog](https://setoid.com)\n- Marinela Parovic\n\n## Acknowledgements\n\nThe mCoq developers thank Arthur Charguéraud, Georges Gonthier, Farah Hariri, Cătălin Hrițcu,\nRobbert Krebbers, Pengyu Nie, Zachary Tatlock, James R. Wilcox and Théo Zimmermann\nfor their feedback on this work.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineeringsoftware%2Fmcoq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fengineeringsoftware%2Fmcoq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineeringsoftware%2Fmcoq/lists"}