How a generator is checked
An instance is identified by its GBD hash, the MD5 of the normalised CNF, which ignores comments, header and whitespace. We run the image with the parameters recorded for one competition instance and compare.
The levels
| N1 | same GBD hash |
| N2 | same up to the order of clauses |
| N3 | same up to a renaming of the variables |
| N4 | same number of variables and clauses |
| -- | no match |
A level below N1 is not necessarily the generator's fault: an archived copy can differ from what its author produced, a set can have been shuffled by the organisers, or a script can have changed after the submission. Those cases are recorded on each generator's page.
Where we stand
| Generator | References | Checked | Exact |
|---|---|---|---|
| AIGER bridge | 31 | 31 | 30 |
| AIGER bridge | 31 | 31 | 30 |
| CNFgen | 24 | 24 | 24 |
| Community Attachment | 56 | 56 | 54 |
| CRUX miters | 230 | 230 | 230 |
| freeLunch bridge | 0 | 0 | 0 |
| genxormiter | 0 | 0 | 0 |
| lockchart-to-cnf | 20 | 5 | 3 |
| mdp-benchmark | 30 | 30 | 28 |
| Oddball | 40 | 40 | 40 |
| Round-robin tournament scheduling | 20 | 20 | 20 |
| sgen1 | 30 | 30 | 28 |
Reproduce it yourself
git clone https://github.com/sat-heritage/benchs-generators.git cd benchs-generators python3 tools/check_repo.py # no Docker needed: the recipes hold together docker build -t satex-gen/gbd:0.4.2 tools/gbd docker build -t satex-gen/sgen1:2009 cnf/sgen1 python3 tools/verify.py sgen1
The verifier regenerates every reference instance of the target and prints one line per instance. Hashes are computed with the official gbdc package of GBD.