A Java library for creating, manipulating, and solving Boolean and Pseudo-Boolean formulas with a focus on memory efficiency and performance.
LogicNG is a Java library for creating, manipulating, and solving Boolean and Pseudo-Boolean formulas. It provides pure Java implementations of popular SAT and pseudo-Boolean solvers like MiniSAT and Glucose, enabling efficient logic operations and solving. The library is designed to handle high-volume industrial applications, processing millions of formulas daily with a focus on memory efficiency and performance.
Java developers and engineers working on logic-based applications, such as configuration systems, automated reasoning, or industrial software requiring Boolean formula manipulation and solving. It is also suitable for researchers and practitioners in computational logic and SAT solving.
Developers choose LogicNG for its memory-efficient design, integrated solvers, and industrial-grade performance. Its unique formula factory approach minimizes object creation and caching, offering significant speed and memory advantages over other JVM logic libraries, making it ideal for scalable, high-throughput systems.
The Next Generation Logic Library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Ensures each formula is created only once in memory, drastically reducing memory footprint and redundant computations, as emphasized in the library's core philosophy.
Includes 100% Java implementations of MiniSAT, Glucose, and others, providing a comprehensive, dependency-free toolkit for SAT and pseudo-Boolean solving.
Designed to handle millions of formulas daily in production systems, with robust performance and caching mechanisms for high-throughput scenarios.
Formulas cache algorithm results, so the same computation on the same formula is executed only once, significantly boosting execution speed for repeated operations.
Limited to JVM-based projects, making it unsuitable for cross-language environments or teams preferring polyglot architectures.
The development branch has changing APIs and less testing, posing risks for production use, as noted in the README's development model section.
Focus on advanced logic operations and solver integration requires solid understanding of Boolean algebra and SAT concepts, which may deter casual users.
Industrial-scale design introduces complexity that's unnecessary for basic formula manipulation, where simpler libraries might be more appropriate.