You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
mCoq is a tool for mutation analysis of verification projects that use the [Coq proof assistant](https://coq.inria.fr).
3
+
mCoq is a tool for mutation analysis of verification projects that use the
4
+
[Coq proof assistant](https://coq.inria.fr). mCoq applies a set of mutation
5
+
operators to Coq definitions, with each application generating a modified
6
+
version, called a mutant, of the project. If all proofs of a mutant are
7
+
successfully checked, the mutant is declared live; otherwise it is declared
8
+
killed. mCoq produces HTML reports pinpointing both live and killed mutants,
9
+
where live mutants may indicate incomplete specifications. The
10
+
[research paper][ase-paper] provides more information on the technique
11
+
and optimizations that mCoq implements.
4
12
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.
13
+
Note to ICSE-Demo reviewers: we recently cleaned up the code and improved
14
+
our scripts for running the tool, so the steps shown in the paper submission
15
+
may differ from the ones below. Additionally, the directory structures
16
+
may differ from the ones shown in the demo video.
6
17
7
18
## Requirements
8
19
@@ -12,11 +23,12 @@ Note for ICSE-Demo reviewers: we recently cleaned up the code and improved our s
12
23
-[Python 3](https://www.python.org)
13
24
-[JDK 8](https://openjdk.java.net) (or later)
14
25
-[Gradle 6](https://gradle.org/install/)
26
+
-[Git](https://git-scm.com)
15
27
16
28
## Installation and usage
17
29
18
30
We strongly recommend installing the required versions of OCaml, Coq,
19
-
and SerAPI via the [OPAM package manager](https://opam.ocaml.org/),
31
+
and SerAPI via the [OPAM package manager](https://opam.ocaml.org),
20
32
version 2.0.5 or later.
21
33
22
34
To set up the OPAM-based OCaml environment, use:
@@ -25,27 +37,26 @@ opam switch create 4.07.1
25
37
opam switch 4.07.1
26
38
eval $(opam env)
27
39
```
28
-
29
40
Then, install Coq and SerAPI, pinning them to avoid unintended upgrades:
30
41
```
31
42
opam update
32
43
opam pin add coq 8.10.2
33
44
opam pin add coq-serapi 8.10.0+0.7.0
34
45
```
35
-
36
46
Next, clone the mCoq repository and enter the directory:
The entry point for using mCoq is the `mcoq.py` script. To see
43
-
the available options, run:
53
+
the available options, use:
44
54
```
45
55
./mcoq.py --help
46
56
```
47
57
48
-
For example, to apply mCoq to [StructTact](https://github.com/uwplse/StructTact), revision [b95f041](https://github.com/uwplse/StructTact/commit/b95f041cb83986fb0fe1f9689d7196e2f09a4839), use:
58
+
For example, to apply mCoq to [StructTact][structtact-repo]
59
+
revision [b95f041][structtact-revision], use:
49
60
```
50
61
./mcoq.py --project StructTact --sha b95f041 \
51
62
--url https://github.com/uwplse/StructTact.git \
@@ -56,3 +67,7 @@ After running this command, look for a HTML report in the `reports` directory.
56
67
For large Coq projects, it is recommended to set the `--threads` option
57
68
to at least the number of CPU cores in the machine, since mutation analysis
0 commit comments