The programs that produce SAT benchmarks, each as a Docker image: the families the competitions used, and others that live outside them, in papers and in solver tuning.

A pilot, and a collective one: please check, correct and contribute. Everything here is generated from the data of the sat-heritage/benchs-generators repository. A generator whose licence is unknown has its recipe published but no image, and a family with no generator is one we could not find or could not run: corrections, missing generators and licence clarifications are welcome as pull requests or issues. Adding your own generator takes four files, or just an issue with a link to your code: see adding a generator. The companion project for solvers is SAT Heritage.

SAT benchmark generators, from the competitions and beyond

A benchmark is only reproducible if the program that produced it still runs. This repository packages those programs as Docker images, pins their sources to one commit, and checks each image by regenerating known instances: same GBD hash, same instance. Many of these families were used by the competitions; others were never submitted to one, and serve in papers, in solver tuning or in cube and conquer experiments.

12
generators packaged
487
instances regenerated exactly
497
reference instances checked, of 512 recorded
8
images publishable, the others lack a licence
8
competition families with a generator here
2
generators whose families never went to a competition
3
bridges: they encode what another competition distributes

Generators

They make instances out of parameters alone.

CNFgen

Massimo Lauria and contributors · 2013
PythonGPL-3.0image published
24 of 24 instances exactbinary-pigeon-holerelativized-pigeon-hole

Community Attachment

Jesus Giraldez-Cru, Jordi Levy · 2015
C++none statedrecipe only, licence unknown
54 of 56 instances exactrandom-modularity

CRUX miters

Armin Biere · 2021
C, then Boolector and aigernone statedrecipe only, licence unknown
230 of 230 instances exact

genxormiter

Armin Biere · 2025
CMITimage published
no competition instance to check against

lockchart-to-cnf

Nikolaus Riedl-Ehrenreich · 2025
PythonCC0-1.0image published
3 of 5 instances exactmechanical-master-key

mdp-benchmark

Randal E. Bryant · 2022
PythonMITimage published
28 of 30 instances exactminimum-disagreement-parity

Oddball

Andrew Mihal · 2025
Pythonnone statedrecipe only, licence unknown
40 of 40 instances exactoddball-weighing

Round-robin tournament scheduling

Joseph Reeves · 2025
PythonMITimage published
20 of 20 instances exactscheduling

sgen1

Ivor Spence · 2009
Cnone statedrecipe only, licence unknown
28 of 30 instances exactsgen

Bridges

They encode what another competition distributes, and never redistribute it. See bridges.

AIGER bridge · hwmcc10

Armin Biere · 2021
bridgeCMITimage published
30 of 31 instances exact

AIGER bridge · smtqfbv

Armin Biere · 2021
bridgeCMITimage published
30 of 31 instances exact

freeLunch bridge

Tomas Balyo and Vojtech Bardiovsky · 2022
bridgeJava, with the Fast Downward translator in PythonGPL-3.0image published
no competition instance to check against

Instances nobody submitted

Reproducing what a competition used is one half of the work; making new instances is the other. Every generator page carries sample runs across its parameters, with the size of the formula each one produces, so that a family can be taken further than the dozen instances a competition happened to keep. Those instances are in no database, ours included: they are made on demand.

Generators and bridges

A generator makes an instance out of parameters alone. A bridge starts from an artefact another competition distributes, a circuit of the hardware model checking competition for instance, and encodes it into CNF with a pinned toolchain. We keep the manifest of each upstream collection, with its checksums and its terms, and fetch the files into a local cache: the benchmarks of another competition are never redistributed here.

Where the rankings come from

For the years whose detailed results are published, every solver's runtime on every instance is known, keyed by the same GBD hash we use. That gives, for each benchmark family, the ranking the solvers would have had on that family alone, which is regularly not the overall ranking. See the families.

Years covered: 2023, 2024, 2026 · 42 families with at least eight instances · measure: PAR-2 per instance: the runtime when solved, twice the time limit otherwise.