Skip to content

Commit 4dc6183

Browse files
committed
2 parents 09fc182 + 15c6778 commit 4dc6183

File tree

2 files changed

+32
-11
lines changed

2 files changed

+32
-11
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
jsexp/target
2+
mcoq/.gradle
3+
mcoq/build
4+
reports/results
5+
downloads/*/

README.md

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
1-
# mCoq
1+
# mCoq: Mutation Analysis for Coq
22

3-
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).
45

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+
mCoq applies a set of mutation operators to Coq definitions, generating
7+
modified versions, called mutants, of the project. If all proofs of a
8+
mutant are successfully checked, a mutant is declared live; otherwise it
9+
is declared killed. mCoq produces HTML reports pinpointing both live and
10+
killed mutants in the Coq code, where live mutants may indicate
11+
incomplete specifications. The [research paper][ase-paper] provides more
12+
information on the technique and optimizations that mCoq implements.
13+
14+
Note to ICSE-Demo reviewers: we recently cleaned up the code and improved
15+
our scripts for running the tool, so the steps shown in the paper submission
16+
may differ from the ones below. Additionally, the directory structures
17+
may differ from the ones shown in the demo video.
618

719
## Requirements
820

@@ -12,11 +24,12 @@ Note for ICSE-Demo reviewers: we recently cleaned up the code and improved our s
1224
- [Python 3](https://www.python.org)
1325
- [JDK 8](https://openjdk.java.net) (or later)
1426
- [Gradle 6](https://gradle.org/install/)
27+
- [Git](https://git-scm.com)
1528

1629
## Installation and usage
1730

1831
We strongly recommend installing the required versions of OCaml, Coq,
19-
and SerAPI via the [OPAM package manager](https://opam.ocaml.org/),
32+
and SerAPI via the [OPAM package manager](https://opam.ocaml.org),
2033
version 2.0.5 or later.
2134

2235
To set up the OPAM-based OCaml environment, use:
@@ -25,34 +38,37 @@ opam switch create 4.07.1
2538
opam switch 4.07.1
2639
eval $(opam env)
2740
```
28-
2941
Then, install Coq and SerAPI, pinning them to avoid unintended upgrades:
3042
```
3143
opam update
3244
opam pin add coq 8.10.2
3345
opam pin add coq-serapi 8.10.0+0.7.0
3446
```
35-
3647
Next, clone the mCoq repository and enter the directory:
3748
```
3849
git clone https://github.com/EngineeringSoftware/mcoq.git
3950
cd mcoq
4051
```
4152

4253
The entry point for using mCoq is the `mcoq.py` script. To see
43-
the available options, run:
54+
the available options, use:
4455
```
4556
./mcoq.py --help
4657
```
4758

48-
For example, to apply mCoq to [StructTact](https://github.com/uwplse/StructTact), revision [b95f041](https://github.com/uwplse/StructTact/commit/b95f041cb83986fb0fe1f9689d7196e2f09a4839), use:
59+
For example, to apply mCoq to [StructTact][structtact-repo]
60+
revision [`82a85b7`][structtact-revision], run:
4961
```
50-
./mcoq.py --project StructTact --sha b95f041 \
62+
./mcoq.py --project StructTact --threads 2 --sha 82a85b7 \
5163
--url https://github.com/uwplse/StructTact.git \
52-
--buildcmd "./configure && make -j4" --qdir ".,StructTact"
64+
--buildcmd "./configure && make -j2" --qdir ".,StructTact"
5365
```
5466
After running this command, look for a HTML report in the `reports` directory.
5567

5668
For large Coq projects, it is recommended to set the `--threads` option
5769
to at least the number of CPU cores in the machine, since mutation analysis
58-
may otherwise take a long time to complete.
70+
may otherwise take a very long time to complete.
71+
72+
[ase-paper]: https://users.ece.utexas.edu/~gligoric/papers/CelikETAL19mCoq.pdf
73+
[structtact-repo]: https://github.com/uwplse/StructTact
74+
[structtact-revision]: https://github.com/uwplse/StructTact/commit/82a85b7ec07e71fa6b30cfc05f6a7bfb09ef2510

0 commit comments

Comments
 (0)