Answer Set Programming is an incredibly powerful tool to declaratively solve combinatorial problems. Clingo is one of the best open source implementations in my opinion: https://github.com/potassco/clingo
- Based on conflict driven nogood learning, it has incredible performance (including good multithreading)
- It has different optimization and enumeration modes
- It has strong built-in heuristics, but also allows manual heuristics
- It allows incremental solving
- It has a nice API to integrate other solving paradigms (like difference logic and constraint programming, for which implementations already exist)
- There is a huge ecosystem around it