{"id":37070090,"url":"https://github.com/sat-heritage/docker-images","last_synced_at":"2026-01-14T08:04:21.462Z","repository":{"id":48681442,"uuid":"242098694","full_name":"sat-heritage/docker-images","owner":"sat-heritage","description":"SAT Heritage: a community-driven effort for archiving, building and running more than thousand SAT solvers","archived":false,"fork":false,"pushed_at":"2022-12-18T09:45:31.000Z","size":386,"stargazers_count":37,"open_issues_count":24,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-21T07:19:58.532Z","etag":null,"topics":["docker","reproducibility","sat","sat-solvers"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sat-heritage.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-02-21T09:11:58.000Z","updated_at":"2025-07-10T18:18:21.000Z","dependencies_parsed_at":"2023-01-29T19:02:55.340Z","dependency_job_id":null,"html_url":"https://github.com/sat-heritage/docker-images","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/sat-heritage/docker-images","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sat-heritage%2Fdocker-images","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sat-heritage%2Fdocker-images/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sat-heritage%2Fdocker-images/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sat-heritage%2Fdocker-images/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sat-heritage","download_url":"https://codeload.github.com/sat-heritage/docker-images/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sat-heritage%2Fdocker-images/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28413527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T05:26:33.345Z","status":"ssl_error","status_checked_at":"2026-01-14T05:21:57.251Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","reproducibility","sat","sat-solvers"],"created_at":"2026-01-14T08:04:20.906Z","updated_at":"2026-01-14T08:04:21.453Z","avatar_url":"https://github.com/sat-heritage.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SAT Heritage - Docker images of SAT solvers\n\n##  A community-driven effort for archiving, building and running more than thousand SAT solvers\n\n![Solvers count](https://badgen.net/https/github.com/sat-heritage/docker-images/releases/download/list/counter.json)\n[![PyPI version](https://badge.fury.io/py/satex.svg)](https://badge.fury.io/py/satex)\n[![Docker Hub](https://badgen.net/badge/DockerHub/satex/blue?icon=docker)](https://hub.docker.com/u/satex)\n[![Zenodo](https://badgen.net/badge/Zenodo/satex/5cb85c)](https://zenodo.org/communities/satex)\n[![Gitter](https://badges.gitter.im/sat-heritage/community.svg)](https://gitter.im/sat-heritage/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\n## Principles\n\nSAT research has a long history of source code and binary releases, thanks to competitions organized every year.\nHowever, since every cycle of competitions has its own set of rules and an adhoc way of publishing source code and\nbinaries, compiling or even running any solver may be harder than what it seems. And there has been more than a thousand solvers published so far, some of them released in the early 90's! \n\n**This project drives a community-driven effort to archive and to allow easy compilation and running of all SAT solvers\nthat have been released so far**.  \n\nThanks to our tool, building (or running) a solver from its source (or from its binary) can be done in one line.\n\n## Usage\n\nRequirements:\n* [Docker](https://docker.com)\n\n```\ndocker run --rm -v $PWD:/data satex/\u003ctool\u003e:\u003cyear\u003e \u003cDIMACS\u003e [\u003cPROOF\u003e]\n```\n\n## `satex` Python script\n\nRequirements:\n* [Python](https://www.python.org/) ≥3.6\n* [Docker](https://docker.com)\n\n```\npip install -U satex     # you may have to use pip3\n```\n\nIn case `satex` commands fails with `command not found` error, try doing `export\nPATH=$HOME/.local/bin:$PATH` beforehand.\nIf it works, add this fixture within your `~/.bashrc` or `~/.profile` file.\nSee https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site\n\n### List images\n```\nsatex list\nsatex list '*:2018'\nsatex list 'maple*'\n```\n\nBy default, `satex` considers only solvers which have been validated.\nSolvers which are not yet validated can be listed with `--unstable` option;\nthose which are not compiling/working with `--fixme`;\nall the referenced solvers are considered with the `--all` option:\n```\nsatex list --fixme      # solvers to be fixed\nsatex list --unstable   # solvers to be tested\nsatex list --all        # all referenced solvers\n```\n\n### Information\n\nPrint information related to solvers, including authors, command line,\nvalidation status. and possibly comments.\n\n```\nsatex info 'glucose*'\nsatex info '*:2018'\n```\n\n### Run images\n```\nsatex run cadical:2019 dimacs [proof]\nsatex run '*:2016' dimacs [proof]\nsatex run '*:2009' dimacs -e MAXNBTHREAD=24\n```\n\n### Run images with direct call to solvers\n```\nsatex run-raw cadical:2019 -h\n```\n\n### Open shell\n```\nsatex shell cadical:2019\n```\n\n### Extract solvers binaries\n```\nsatex extract '*:2019' /tmp/\n```\n\n### Repository management\n\nUsage:\n```\nsatex build '*:2018'\nsatex test '*:2018'\nsatex push '*:2018'\n```\n\n## Persistent storage for sources and binaries\n\nConsider using [Zenodo](https://zenodo.org) for storing your software, as it provides persistent and versioned URLs.\n\nSee https://zenodo.org/communities/satex.\n\n\n## Adding solvers\n\nSolvers are grouped by sets, typically year of competitions. Each set has its own directory and is referenced in `index.json`.\nThe minimal structure of a `\u003cset\u003e` directory is the following:\n* `\u003cset\u003e/solvers.json`: configuration file for running solvers.\n* `\u003cset\u003e/setup.json`: configuration file for building images\n\n### solvers.json\n\nJSON object where keys are the solver identifiers (necessarily in lower case),\nand values are JSON objects with the following keys:\n\n| key | type | description |\n| --- | --- | --- |\n| name | string | Name of the solver, without case restriction |\n| call | string | Name of the executable |\n| path | string | Directory from which the executable should be called.\u003cbr\u003eDefault: `name` |\n| args | string list | arguments to the executable for simple solving. See below for allowed keywords. |\n| argsproof | string list | arguments to the executable for solving with proof output. See below for allowed keywords |\n| gz | boolean | If true, the solver supports natively gzipped input files.  If false, an input file ending with `.gz` will be first decompressed by the wrapper script. |\n\n\nThe following keywords are allowed in `args` and `argsproof`:\n\n| keyword | description |\n| --- | --- |\n| FILECNF | Replaced by the absolute path (within the Docker container) to the input DIMACS file.\u003cbr\u003eWhenever the input file ends with `.gz` and `gz` is `False`, the input file is unzipped as `/tmp/gunzipped.cnf` |\n| FILEPROOF | Replaced by the absolute path (within the Docker container) to the output file for proof |\n| MAXNBTHREAD | Replaced by the `MAXNBTHREAD` environment variable; `1` by default.\u003cbr\u003eExample: `satex run asolver:ayear my.cnf -e MAXNBTHREAD=8` |\n| MEMLIMIT | Replaced by the `MEMLIMIT` environment variable; `1024` by default. |\n| RANDOMSEED | Replaced by the `RANDOMSEED` environment variable; `1234567` by default. |\n| TIMEOUT | Replaced by the `TIMEOUT` environment variable; `3600` by default. |\n\nExample\n```json\n{\n    \"abcdsat\": {\n        \"name\": \"abcdSAT_drup\",\n        \"call\": \"./abcdsat_drup\",\n        \"gz\": true,\n        \"args\": [\n          \"FILECNF\"\n        ],\n        \"argsproof\": [\n          \"FILECNF\",\n          \"-certified\",\n          \"-certified-output=FILEPROOF\"\n        ]\n    },\n    \"lingeling\": {\n        \"call\": \"./lingeling\",\n        \"name\": \"Lingelingbbcmain\",\n        \"gz\": true,\n        \"args\": [\n          \"FILECNF\"\n        ],\n        \"argsproof\": [\n          \"FILECNF\",\n          \"-t\",\n          \"FILEPROOF\"\n        ]\n    }\n}\n```\n\n### setup.json\n\nJSON object with the following keys, used by default for each solver.\nA solver can override these by adding a key with its identifier and a value\nbeing a JSON object with a subset of the following keys.\n\n| key | description |\n| --- | --- |\n| base_version | Version of the base image for running the solver (`base/{base_version}`) |\n| base_from | Image to inherit from for running the solver |\n| builder | Path to the Docker recipe for compiling the solver. If it is not starting with `generic/`, the path is relative to the set directory. The path should contain at least a `Dockerfile`. The builder recipe should install the solver binaries into `/dist`. |\n| builder_base | Image to inherit from for compiling the solver |\n| image_name | Python format string with ENTRY being the set name and SOLVER the solver identifier\u003cbr/\u003eDefault: `\"{SOLVER}:{ENTRY}\"` |\n| dist_version | Version of the recipe for assembling the solver image (`generic/dist-{dist_version}`)\u003cbr\u003eDefault: `\"v1\"` |\n| download_url | Python format string for downloading the solver source/binary |\n| BUILD_DEPENDS | Additional packages to install for compiling the solver.\u003cbr\u003eUsed by `generic/v1` builder |\n| RDEPENDS | Additional packages to install for running the executable.\u003cbr\u003eUsed by `generic/dist-v1` assembler |\n\nPython format strings can use the following variables:\n* `SOLVER`: solver identifier (keys in `solvers.json`)\n* `SOLVER_NAME`: solver name (specified in `solvers.json`)\n\nThe images for running and building the solver (`base_from` and `builder_base`)\nare usually Debian distribution of the year of the competition:\nsee [debian](https://hub.docker.com/_/debian) and [debian/eol](https://hub.docker.com/r/debian/eol/) DockerHub repositories, and\n[timeline](https://en.wikipedia.org/wiki/Debian_version_history#Release_timeline) and [detailed history](https://fr.wikipedia.org/wiki/Debian#Historique_des_versions)\nof Debian releases.\n\nExample:\n```json\n{\n    \"base_version\": \"v1\",\n    \"base_from\": \"debian:stretch-slim\",\n    \"builder\": \"generic/v1\",\n    \"builder_base\": \"debian:stretch-slim\",\n    \"download_url\": \"https://zenodo.org/record/abcdef/files/{SOLVER_NAME}.zip?download=1\",\n    \"asolver\": {\n        \"builder\": \"generic/binary-v1\",\n        \"download_url\": \"https://github.com/sat-heritage/docker-images/releases/download/packages/{SOLVER_NAME}\"\n    }\n}\n```\n\n\n## License\n\nThe Docker images are for academic and educational use only.\n\nThe `satex` (`satex.py`) program is distributed under the MIT license. Please see the\n[LICENSE](LICENSE) file for more details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsat-heritage%2Fdocker-images","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsat-heritage%2Fdocker-images","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsat-heritage%2Fdocker-images/lists"}