|
| 1 | +# mCoq |
| 2 | + |
| 3 | +mCoq is a tool for mutation analysis of verification projects that use the [Coq proof assistant](https://coq.inria.fr). |
| 4 | + |
| 5 | +Note for ICSE-Demo reviewers: we recently cleaned up the code and improved our scripts for running the tool, so the steps shown in paper submission may differ from the ones below. Additionally, the directory structures may differ from the ones shown in the demo video. |
| 6 | + |
| 7 | +## Requirements |
| 8 | + |
| 9 | +- [OCaml 4.07.1](https://ocaml.org) |
| 10 | +- [Coq 8.10.2](https://coq.inria.fr/download) |
| 11 | +- [SerAPI 0.7.0](https://github.com/ejgallego/coq-serapi) |
| 12 | +- [Python 3](https://www.python.org) |
| 13 | +- [JDK 8](https://openjdk.java.net) (or later) |
| 14 | +- [Gradle 6](https://gradle.org/install/) |
| 15 | + |
| 16 | +## Installation and usage |
| 17 | + |
| 18 | +We strongly recommend installing the required versions of OCaml, Coq, |
| 19 | +and SerAPI via the [OPAM package manager](https://opam.ocaml.org/), |
| 20 | +version 2.0.5 or later. |
| 21 | + |
| 22 | +To set up the OPAM and OCaml environment: |
| 23 | +``` |
| 24 | +$ opam switch create 4.07.1 |
| 25 | +$ opam switch 4.07.1 |
| 26 | +$ eval $(opam env) |
| 27 | +``` |
| 28 | + |
| 29 | +Then, install Coq and SerAPI, pinning them to avoid unintended upgrades: |
| 30 | +``` |
| 31 | +$ opam update |
| 32 | +$ opam pin add coq 8.10.2 |
| 33 | +$ opam pin add coq-serapi 8.10.0+0.7.0 |
| 34 | +``` |
| 35 | + |
| 36 | +Next, clone the mCoq repository and enter the directory: |
| 37 | +``` |
| 38 | +$ git clone https://github.com/EngineeringSoftware/mcoq.git |
| 39 | +$ cd mcoq |
| 40 | +``` |
| 41 | + |
| 42 | +The entry point for using mCoq is the `mcoq.py` script. To see |
| 43 | +the available options, run: |
| 44 | +``` |
| 45 | +./mcoq.py --help |
| 46 | +``` |
| 47 | + |
| 48 | +For example, to apply mCoq to [StructTact](https://github.com/uwplse/StructTact), revision [b95f041](https://github.com/uwplse/StructTact/commit/b95f041cb83986fb0fe1f9689d7196e2f09a4839), use: |
| 49 | +``` |
| 50 | +./mcoq.py --project StructTact --sha b95f041 --url https://github.com/uwplse/StructTact.git --buildcmd "./configure && make -j4" --qdir ".,StructTact" |
| 51 | +``` |
| 52 | + |
| 53 | +After running this command, look for a HTML report in the `reports` directory. |
0 commit comments