Aperture: an Anytime, Complete and Incremental MaxSAT Solver
Background: MaxSAT
Background: Anytime MaxSAT
Background: Anytime MaxSAT Today
[1] https://github.com/alexander-nadel-academic/tt-open-wbo-inc
Solver | Anytime | Complete | Incremental | Unified-Flow* | API |
tt-open-wbo-inc | ✅ | ❌ | ❌ | ❌ | CLI (File) |
Aperture
Solver | Anytime | Complete | Incremental | Unified-Flow | API |
tt-open-wbo-inc | ✅ | ❌ | ❌ | ❌ | CLI (File) |
Aperture | ✅ | ✅ | ✅ | ✅ | CLI (File), C++ (& IPAMIR), Python |
MaxSAT Solving Flow
Initial SAT
Local Search
Idle
MrsBeaver
Linear Search SAT-UNSAT
Polosat
SAT
MaxSAT Solving Flow
Initial SAT
Local Search
Idle
MrsBeaver
Linear Search SAT-UNSAT
Polosat
SAT
Can be invoked incrementally
MaxSAT Solving Flow
Initial SAT
Local Search
Idle
MrsBeaver
Linear Search SAT-UNSAT
Polosat
SAT
An initial SAT assignment is required
A separate SAT solver might be used.
Even non-incremental, e.g., AE-Kissat-MAB1.
[1] H. Ding, M. Luo, C. Li, S. Li, R. Chen, C. Xiong, and X. Wu, “AE-Kissat-MAB: Automated evolution of kissat with multi-armed bandits,” in Proceedings of SAT Competition 2025
MaxSAT Solving Flow
Initial SAT
Local Search
Idle
MrsBeaver
Linear Search SAT-UNSAT
Polosat
SAT
Anytime optimization�Based on incremental SAT solving
Can be interrupted anytime
MaxSAT Solving Flow
Initial SAT
Local Search
Idle
MrsBeaver
Linear Search SAT-UNSAT
Polosat
SAT
Classic Local Search
Incomplete Part
e.g., SPB-MaxSAT-c-Band1
[1] M. Jin, K. He, J. Zheng, J. Xue, and Z. Chen, “Combining bandmaxsat and fps with spb-maxsat-c,” in MaxSAT Evaluation 2024
MaxSAT Solving Flow – SAT Based Approx.
[1] A. Nadel, “Solving maxsat with bit-vector optimization,” SAT 2018
[2] -----------, “Anytime weighted maxsat with improved polarity selection and bit-vector optimization,” FMCAD 2019
1
0
1
1
1
1
0
1
0
. . .
Solve With Negated Assumption
MaxSAT Solving Flow – SAT Based Approx.
[1] A. Nadel, “On optimizing a generic function in sat,” FMCAD 2020
MaxSAT Solving Flow
Initial SAT
Local Search
Idle
MrsBeaver
Linear Search SAT-UNSAT
Polosat
SAT
Incomplete Part
SAT-based Local Search
MrsBeaver1,2
[1] A. Nadel, “Solving maxsat with bit-vector optimization,” SAT 2018
[2] -----------, “Anytime weighted maxsat with improved polarity selection and bit-vector optimization,” FMCAD 2019
[3] A. Nadel, “On optimizing a generic function in sat,” FMCAD 2020
MaxSAT Solving Flow
Initial SAT
Local Search
Idle
MrsBeaver
Linear Search SAT-UNSAT
Polosat
SAT
LSU1
Complete Part
[1] D. L. Berre and A. Parrain, “The sat4j library, release 2.2,” JSAT, vol. 7, no. 2-3, pp. 59–6, 2010.
Experimental Results: MSE’22-24
Experimental Results: MSE’22 Incremental
Beyond Anytime MaxSAT
SolverStatus SolveBlackBox(Lits<TLit> assumps, Lits<TLit> observables, std::function<TWeight(std::function<TLitValue(TLit)>, void*)> PbFunc,…)
def solve_black_box(self, assumptions: TLiterals, observables: TLiterals, pb_func: Callable[[TLit], int],…) -> bool
SolverStatus SolveOBV(Lits<TLit> assumps, Lits<TLit> targets,…) -> bool
def solve_obv(self, assumptions: TLiterals, targets: TLiterals) -> bool
MaxSAT
SAT
BlackBox
OBV
Thank You!