Metadata-Version: 2.4
Name: combinatory-synthesizer
Version: 0.0.1.dev2
Summary: Type based synthesis framework using inhabitation in FCLP
Project-URL: Documentation, https://github.com/Jekannadar/cosy#readme
Project-URL: Issues, https://github.com/Jekannadar/cosy/issues
Project-URL: Source, https://github.com/Jekannadar/cosy
Author-email: Constantin Chaumet <constantin.chaumet@tu-dortmund.de>, Andrej Dudenhefner <andrej.dudenhefner@cs.tu-dortmund.de>, Felix Laarmann <felix.laarmann@tu-dortmund.de>, Christoph Stahl <christoph.stahl@tu-dortmund.de>
License-Expression: Apache-2.0
License-File: LICENSE.txt
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# CoSy

<div align="center">

<img src="https://raw.githubusercontent.com/tudo-seal/cosy/main/docs/assets/images/logo.svg" alt="CoSy logo" width="400" role="img">

|          |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Package  | [![PyPI - Version](https://img.shields.io/pypi/v/combinatory-synthesizer.svg?logo=pypi&label=&labelColor=grey&logoColor=gold&style=flat-square)](https://pypi.org/project/combinatory-synthesizer) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/combinatory-synthesizer.svg?logo=python&label=&labelColor=grey&logoColor=gold&style=flat-square)](https://pypi.org/project/combinatory-synthesizer)                                                  |
| License  | [![License](https://img.shields.io/github/license/tudo-seal/cosy?color=9E2165&logo=apache&label=&labelColor=grey&style=flat-square)](https://opensource.org/licenses/Apache-2.0)                                                                                                                                                                                                                                                                                                                                                       |
| Package  | [![CI - Test](https://img.shields.io/github/actions/workflow/status/tudo-seal/cosy/checks.yml?label=checks&style=flat-square)](https://github.com/tudo-seal/cosy/actions/workflows/checks.yml) [![CD - Release CoSy](https://img.shields.io/github/actions/workflow/status/tudo-seal/cosy/release.yml?label=release&style=flat-square)](https://github.com/tudo-seal/cosy/actions/workflows/release.yml)                                                                                                             |
| Docs     | [![Docs - Release](https://img.shields.io/github/actions/workflow/status/tudo-seal/cosy/check-docs.yml?label=checks&style=flat-square)](https://github.com/tudo-seal/cosy/actions/workflows/check-docs.yml) [![Docs - Checks](https://img.shields.io/github/actions/workflow/status/tudo-seal/cosy/deploy-docs.yml?label=deploy&style=flat-square)](https://github.com/tudo-seal/cosy/actions/workflows/deploy-docs.yml)                                                                                             |
| Coverage | [![codecov](https://img.shields.io/codecov/c/github/tudo-seal/cosy?token=40E83ABJV4&logo=codecov&label=&labelColor=grey&style=flat-square)](https://codecov.io/github/tudo-seal/cosy)                                                                                                                                                                                                                                                                                                                                            |
| Traits   | [![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg?style=flat-square)](https://hatch.pypa.io/latest/) [![Checked with mypy](https://img.shields.io/badge/endpoint?url=https://raw.githubusercontent.com/tudo-seal/cosy/main/docs/assets/badges/mypy.json&style=flat-square)](http://mypy-lang.org/) [![Checked with Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json&color=4051b5&style=flat-square)](https://github.com/astral-sh/ruff) |

</div>

-----
`CoSy` enables synthesis of arbitrary artifacts from individual modular components. 
It efficiently handles specification and constraints of these modular components, 
describing how they connect and which performance criteria need to be satisfied.

## APIs

`CoSy` can be used in two different ways.

- Using the `Synthesizer`. This enables using all features but is more complicated to use. 
- Using the `Maestro`. This enables using less features, but is easy to use. 

The `Synthesizer` is the recommended way for "power-users" to interact with `CoSy`. 
Publications that primarily focus on type-theoretic aspects usually use it. 

The `Maesto` is the cute creature playing with building blocks (modular components) on the logo. 
This gifted architect is incredible at connecting these to satisfy any `target` a user may `query` for. 
The `Maestro` API is intended to be easy to use, but the trade-off is lower flexibility. 

For most technological applications of combinatory synthesis to other fields, e.g. synthesizing physical structures, 
the `Maestro` is sufficient. 

## Examples

Examples currently all employ the `Maestro`. 

- For a simple example for a theoretically minded computer scientist, see: [Fibonacci](https://tudo-seal.github.io/cosy/quick-start/)
- For a simple example for a practically minded engineer, see: [Robot Arm (WIP)](#)


## Installation
Installation is as simple as running: 

```console
pip install combinatory-synthesizer
```

`CoSy` itself has no dependencies at all, so it will play nice with any pre-existing projects.

## Documentation
This README is intentionally left brief.  
Please head over to the [documentation](https://tudo-seal.github.io/cosy/) to [get started](https://tudo-seal.github.io/cosy/quick-start/). 

## License

`CoSy` is distributed under the terms of the [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) license.

