domschrei/mallob

Scalable Automated Reasoning for HPC and Clouds

C++

97

3,031 commits

updated Sep 22, 2026

See the code

README

KIT - SAtRes group Helmholtz RSD - /software/mallob Zenodo JOSS Max. tested scale - 6400 cores License - MIT or LGPL

Mallob

Mallob (Malleable Load Balancer, or Massively Parallel Logic Backend) is a distributed platform for automated reasoning in modern large-scale HPC and cloud environments.

Mallob primarily solves instances of propositional satisfiability (SAT) – an essential building block at the core of Symbolic AI. Mallob with its SAT solving engine MallobSat is leading the respective (massively) parallel tracks of the International SAT Competition since 2020.

Each SAT solving task in Mallob can be incremental (allowing for efficient interactive solving procedures over evolving formulas) and can produce and/or check proof information (offering full confidence in each obtained result).

Mallob's flexible and decentralized approach to job scheduling allows to concurrently process many tasks of varying priority by different users.

Building upon Mallob's job scheduling and SAT solving capabilities, Mallob also features engines for state-of-the-art distributed MaxSAT solving (MallobMax) and bit-precise SMT solving (Bitwuzllob - parallelizing Bitwuzla).

Setup

Mallob uses MPI (Message Passing Interface) and is built using CMake.

For a default, full featured build, execute bash scripts/setup/cmake-make.sh build.

Find detailed instructions at docs/setup.md.

Docker

We also provide a setup based on Docker containerization. Please consult the (for now separate) documentation in the docker/ directory.

Usage

Quick Start:

If you just want to use Mallob on a single, parallel machine, then the script scripts/run/mallob_local.sh automatically retrieves a suitable process+thread configuration of Mallob for your hardware that makes use of the entire machine. Useful presets can be applied by calling the scripts at config/presets/. Examples:

# SAT solving (default, simple setup)
scripts/run/mallob_local.sh -mono=instances/r3unsat_300.cnf
# SAT solving (SAT Competition 2026 winning configuration, with Satsuma)
scripts/run/mallob_local.sh $(config/presets/satcomp26-quick) -mono=instances/r3unsat_300.cnf
# SAT solving (with real-time proof checking and assignment checking)
scripts/run/mallob_local.sh $(config/presets/satcomp26-safe) -mono=instances/r3unsat_300.cnf
# SMT solving
scripts/run/mallob_local.sh $(config/presets/smtcomp26) -mono=path/to/problem.smt2
# MaxSAT solving
scripts/run/mallob_local.sh -mono=path/to/problem.wcnf -mono-app=MAXSAT

Always make sure to execute Mallob and its wrapper run scripts from Mallob's home directory, otherwise Mallob will not find critical executables in build/ and will not work correctly.

More general settings:

Run build/mallob --help for an overview of all Mallob options.

E.g., to run MallobSat with one single (MPI) process with twelve Kissat threads, you can execute build/mallob -mono=path/to/problem.cnf -t=12 -satsolver=k.

For multi-process and distributed execution, prepend the command by mpirun or mpiexec followed by appropriate MPI options, as returned by the script scripts/run/mallob_local.sh (see above). E.g., using Open MPI, the following command runs Mallob as a service (taking JSON job submissions on demand at .api/jobs.0/) with a total of eight processes à four threads.

RDMAV_FORK_SAFE=1; mpirun --bind-to core --map-by ppr:8:node:pe=4 -np 8 build/mallob -t=4

Find more detailed instructions at docs/execute.md.
For trouble-shooting, see also FAQ:Execution.

Development and Debugging

Find detailed instructions at docs/develop.md.

Contributing

See CONTRIBUTING.md.

Licensing

First of all, please let us know if you make use of Mallob! We like to hear about it and depend on it for continued support and further development.

Mallob and its source code can be used, changed and redistributed under the terms of the MIT License or the Lesser General Public License (LGPLv3). (One exception is the Glucose interface, excluded from compilation by default - see below.)

Depending on the application engines included in the particular build, the Mallob executable includes a number of liberally licensed solvers and/or (pre-)processors, which are listed at the top of every Mallob execution output together with their main authors.
There is also a Glucose interface for Mallob, which is subject to the non-free license of (parallel-ready) Glucose. Notably, its usage in competitive events is restricted. This interface is however disabled by default.

Note that a full build of Mallob may also download and build GPL-licensed software, which is then called by Mallob as external software (i.e., not compiled or integrated into the Mallob codebase). As of August 2026, this specifically concerns the Satsuma dependency Cliquer.

Within our codebase we further make thankful use of the following liberally licensed projects:

Bibliography

If you make use of Mallob in an academic / scientific setting or in a competitive event, please cite the most relevant / recent among this list of publications (all Open Access). A good, recent candidate is CAV'26.

Further references

Contributors

domschrei

2,882 commits

nrilu

109 commits

schick

11 commits

domschrei/mallob

Scalable Automated Reasoning for HPC and Clouds

C++

97

3,031 commits

updated Sep 22, 2026

See the code

README

KIT - SAtRes group Helmholtz RSD - /software/mallob Zenodo JOSS Max. tested scale - 6400 cores License - MIT or LGPL

Mallob

Mallob (Malleable Load Balancer, or Massively Parallel Logic Backend) is a distributed platform for automated reasoning in modern large-scale HPC and cloud environments.

Mallob primarily solves instances of propositional satisfiability (SAT) – an essential building block at the core of Symbolic AI. Mallob with its SAT solving engine MallobSat is leading the respective (massively) parallel tracks of the International SAT Competition since 2020.

Each SAT solving task in Mallob can be incremental (allowing for efficient interactive solving procedures over evolving formulas) and can produce and/or check proof information (offering full confidence in each obtained result).

Mallob's flexible and decentralized approach to job scheduling allows to concurrently process many tasks of varying priority by different users.

Building upon Mallob's job scheduling and SAT solving capabilities, Mallob also features engines for state-of-the-art distributed MaxSAT solving (MallobMax) and bit-precise SMT solving (Bitwuzllob - parallelizing Bitwuzla).

Setup

Mallob uses MPI (Message Passing Interface) and is built using CMake.

For a default, full featured build, execute bash scripts/setup/cmake-make.sh build.

Find detailed instructions at docs/setup.md.

Docker

We also provide a setup based on Docker containerization. Please consult the (for now separate) documentation in the docker/ directory.

Usage

Quick Start:

If you just want to use Mallob on a single, parallel machine, then the script scripts/run/mallob_local.sh automatically retrieves a suitable process+thread configuration of Mallob for your hardware that makes use of the entire machine. Useful presets can be applied by calling the scripts at config/presets/. Examples:

# SAT solving (default, simple setup)
scripts/run/mallob_local.sh -mono=instances/r3unsat_300.cnf
# SAT solving (SAT Competition 2026 winning configuration, with Satsuma)
scripts/run/mallob_local.sh $(config/presets/satcomp26-quick) -mono=instances/r3unsat_300.cnf
# SAT solving (with real-time proof checking and assignment checking)
scripts/run/mallob_local.sh $(config/presets/satcomp26-safe) -mono=instances/r3unsat_300.cnf
# SMT solving
scripts/run/mallob_local.sh $(config/presets/smtcomp26) -mono=path/to/problem.smt2
# MaxSAT solving
scripts/run/mallob_local.sh -mono=path/to/problem.wcnf -mono-app=MAXSAT

Always make sure to execute Mallob and its wrapper run scripts from Mallob's home directory, otherwise Mallob will not find critical executables in build/ and will not work correctly.

More general settings:

Run build/mallob --help for an overview of all Mallob options.

E.g., to run MallobSat with one single (MPI) process with twelve Kissat threads, you can execute build/mallob -mono=path/to/problem.cnf -t=12 -satsolver=k.

For multi-process and distributed execution, prepend the command by mpirun or mpiexec followed by appropriate MPI options, as returned by the script scripts/run/mallob_local.sh (see above). E.g., using Open MPI, the following command runs Mallob as a service (taking JSON job submissions on demand at .api/jobs.0/) with a total of eight processes à four threads.

RDMAV_FORK_SAFE=1; mpirun --bind-to core --map-by ppr:8:node:pe=4 -np 8 build/mallob -t=4

Find more detailed instructions at docs/execute.md.
For trouble-shooting, see also FAQ:Execution.

Development and Debugging

Find detailed instructions at docs/develop.md.

Contributing

See CONTRIBUTING.md.

Licensing

First of all, please let us know if you make use of Mallob! We like to hear about it and depend on it for continued support and further development.

Mallob and its source code can be used, changed and redistributed under the terms of the MIT License or the Lesser General Public License (LGPLv3). (One exception is the Glucose interface, excluded from compilation by default - see below.)

Depending on the application engines included in the particular build, the Mallob executable includes a number of liberally licensed solvers and/or (pre-)processors, which are listed at the top of every Mallob execution output together with their main authors.
There is also a Glucose interface for Mallob, which is subject to the non-free license of (parallel-ready) Glucose. Notably, its usage in competitive events is restricted. This interface is however disabled by default.

Note that a full build of Mallob may also download and build GPL-licensed software, which is then called by Mallob as external software (i.e., not compiled or integrated into the Mallob codebase). As of August 2026, this specifically concerns the Satsuma dependency Cliquer.

Within our codebase we further make thankful use of the following liberally licensed projects:

Bibliography

If you make use of Mallob in an academic / scientific setting or in a competitive event, please cite the most relevant / recent among this list of publications (all Open Access). A good, recent candidate is CAV'26.

Further references

Contributors

domschrei

2,882 commits

nrilu

109 commits

schick

11 commits

Languages

C++

70.2%

SMT

23.6%

Shell

2.5%

Python

1.7%

C

1.5%