Metadata-Version: 2.1
Name: paramita
Version: 0.0.1
Summary: An extensible framework for building applications around SAT, MaxSAT and related satisfiability technologies.
Keywords: sat,maxsat,constraint
Author: Logic and Optimization Group
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: POSIX :: Linux
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Project-URL: Homepage, https://ulog.udl.cat
Requires-Python: >=3.8
Requires-Dist: nanobind~=2.0
Description-Content-Type: text/markdown

# Paramita

[Documentation](https://ulog.udl.cat/static/doc/paramita/) | [PyPI](https://pypi.org/project/paramita/) | [Paramita Interfaces](https://codeberg.org/paramita/paramita-interfaces) | [Paramita Plugins](https://codeberg.org/paramita/paramita-plugins)

Paramita is an extensible framework for building applications around SAT, MaxSAT and related satisfiability technologies. It provides a unified API for interacting with different solvers, supports plugins written in C++ and Python, and includes modelling tools for constructing and solving problems.

## Quick Start

Paramita is available at PyPI and can be installed using `pip`:

```
pip install paramita
```

The core Paramita package is independent of any specific solver. Solvers, encoders and other components are distributed as plugins that can be installed independently.
For this example, we will download, compile and install CaDiCaL version 3.0.0 from the default [paramita-plugins](https://codeberg.org/paramita/paramita-plugins) repository:

```
paramita plugins build cmake '#sat-solvers/cadical-3.0.0'
```

Then, we can use the compiled CaDiCaL 3.0.0 SAT solver to solve a CNF formula in Python:

```
from paramita.solvers import SatSolver

solver = SatSolver.from_name("Cadical300")
solver.add_clauses([[1, 2], [-1, -2]])
is_sat = solver.solve()
print(is_sat)
```

For more information you can visit the [official documentation](https://ulog.udl.cat/static/doc/paramita/).