Encoding Layer API#

The hermax.encoder package provides a unified way for compiling Pseudo-Boolean and Cardinality constraints efficiently.

PBCompiler#

PBItem#

References#

The encoders used in Hermax are state-of-the-art research in SAT encoding techniques. References:

  • PySAT (Cardinality): Hermax uses pycard from the PySAT toolkit.

    • Reference: Ignatiev, A., Morgado, A., & Marques-Silva, J. (2018). PySAT: A Python Toolkit for Prototyping with SAT Oracles.

  • PBLib (Pseudo-Boolean): We use the PBLib library for our PB encoding strategies.

    • Reference: Manthey, N., Philipp, T., & Steinke, P. (2015). PBLib - A Library for Encoding Pseudo-Boolean Constraints into CNF.

  • PB(AMO) (PB + AMO): We provide bindings to PB(AMO) encodings, which we exploit in our modelling layer.

    • Reference: Bofill, M., Garcia, J., Suy, J., & Villaret, M. (2021). SAT Encodings for Pseudo-Boolean Constraints Together With At-Most-One Constraints.