Metadata-Version: 2.4
Name: coomsuite
Version: 1.1.2
Summary: Python package to parse and solve COOM configuration instances using ASP.
Author-email: Nicolas Rühling <nruehling@uni-potsdam.de>
Project-URL: Homepage, https://github.com/potassco/coom-suite.git/
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: antlr4-python3-runtime==4.13.2
Requires-Dist: clingo==5.7.*
Requires-Dist: flingo==1.0.0
Requires-Dist: clinguin>=2.6.1
Provides-Extra: format
Requires-Dist: black; extra == "format"
Requires-Dist: isort; extra == "format"
Requires-Dist: autoflake; extra == "format"
Provides-Extra: lint-pylint
Requires-Dist: pylint; extra == "lint-pylint"
Provides-Extra: typecheck
Requires-Dist: types-setuptools; extra == "typecheck"
Requires-Dist: mypy; extra == "typecheck"
Provides-Extra: test
Requires-Dist: coverage[toml]; extra == "test"
Requires-Dist: clintest>=0.2.0; extra == "test"
Provides-Extra: doc
Requires-Dist: mkdocs; extra == "doc"
Requires-Dist: mkdocs-material; extra == "doc"
Requires-Dist: mkdocstrings[python]; extra == "doc"
Requires-Dist: mkdoclingo; extra == "doc"
Requires-Dist: tree_sitter; extra == "doc"
Provides-Extra: grammar
Requires-Dist: antlr4-tools; extra == "grammar"
Provides-Extra: dev
Requires-Dist: coomsuite[grammar,lint_pylint,test,typecheck]; extra == "dev"
Dynamic: license-file

# COOM Suite

The [COOM language](https://www.coom-lang.org/) is a domain-specific language
for modelling product configuration problems. While currently geared towards
ASP, the *COOM Suite* is intended to serve as a **general workbench** for
experimentation with **industrial-scale product configuration problems**. It
includes a (customizable) [ANTLR v4](https://www.antlr.org/) parser to convert
COOM specifications into facts, and currently contains two ASP encodings for
solving: one for [clingo](https://potassco.org/clingo) and one for hybrid
solver [flingo](https://github.com/potassco/flingo).

In addition, a prototypical UI, a range of examples and a benchmark collection
with four scalable benchmark sets is provided.

If you want to cite the COOM Suite, please use the following reference

> J. Baumeister, S. Hahn, K. Herud, M. Ostrowski, J. Reutelshöfer, N. Rühling,
> T. Schaub, P. Wanko. Towards Industrial-scale Product Configuration. _CoRR_,
> abs/2504.00013, 2025. doi: 10.48550/arXiv.2504.00013. URL
> https://arxiv.org/abs/2504.00013.

## Usage

Look at our [documentation page](https://potassco.org/coom-suite) to see how to
use the *COOM Suite*.

### Solving

The main functionality the *COOM Suite* offers is converting a COOM
configuration model and solving it using ASP. To do this, run

```bash
coomsuite solve examples/coom/kids-bike.coom
```

This will convert the given COOM file to a set of (serialized) facts, refine
these facts, and finally solve them with the clingo encoding.

- Note that the direct conversion of COOM into facts is a mere serialization of
  the COOM model. We make use of a preprocessing encoding to translate the
  "serialized" facts into a set of "refined" facts, capturing the essence of
  the configuration problem. To show the "refined" facts, run the `solve` mode
  with option `--show-facts`.

### Convert COOM to facts

To convert a COOM instance into a set of (serialized) facts run

```bash
coomsuite convert examples/coom/kids-bike.coom
```

By default, the facts are printed to the console. Optionally, an output
directory can be provided using option `--output dir`.

## Examples

The COOM Suite contains a range of (product) configuration examples encoded in
the COOM language. They can be found in the [`examples/coom`](examples/coom)
directory. We highlight here only the *Bike* collection, containing three
examples in increasing complexity that correspond to the three COOM language
fragments defined above: the [Kids](examples/coom/bike/kids-bike.coom),
[City](examples/coom/bike/city-bike.coom), and
[Travel](examples/coom/bike/travel-bike.coom) Bike.

We also provide the corresponding (serialized and refined) facts to these
examples under [`examples/asp`](examples/asp).

## Installation

For instructions on how to install from source or `pip` see our
[documentation page](https://potassco.org/coom-suite).
