Metadata-Version: 2.4
Name: sublation
Version: 0.1.0
Summary: Non-boolean truth structures for dialectical reasoning, an alternative to boolean binarism, inspired by Hegelian logic.
Home-page: https://github.com/germanocastanho/sublation-package
Author: Germano Castanho
Author-email: germanocastanho@proton.me
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: build==1.5.0
Requires-Dist: certifi==2026.6.17
Requires-Dist: cffi==2.1.0
Requires-Dist: charset-normalizer==3.4.9
Requires-Dist: cryptography==49.0.0
Requires-Dist: docutils==0.23
Requires-Dist: id==1.6.1
Requires-Dist: idna==3.18
Requires-Dist: iniconfig==2.3.0
Requires-Dist: jaraco-classes==3.4.0
Requires-Dist: jaraco-context==6.1.2
Requires-Dist: jaraco-functools==4.6.0
Requires-Dist: jeepney==0.9.0
Requires-Dist: keyring==25.7.0
Requires-Dist: markdown-it-py==4.2.0
Requires-Dist: mdurl==0.1.2
Requires-Dist: more-itertools==11.1.0
Requires-Dist: nh3==0.3.6
Requires-Dist: packaging==26.2
Requires-Dist: pluggy==1.6.0
Requires-Dist: pycparser==3.0
Requires-Dist: pygments==2.20.0
Requires-Dist: pyproject-hooks==1.2.0
Requires-Dist: pytest==9.1.1
Requires-Dist: readme-renderer==45.0
Requires-Dist: requests==2.34.2
Requires-Dist: requests-toolbelt==1.0.0
Requires-Dist: rfc3986==2.0.0
Requires-Dist: rich==15.0.0
Requires-Dist: secretstorage==3.5.0
Requires-Dist: setuptools==83.0.0
Requires-Dist: twine==6.2.0
Requires-Dist: urllib3==2.7.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Dynamic: license-file

# 🧠 Sublation

Classical boolean logic forces every proposition into exactly one of two states. That works well for most software, but it can't represent situations where a claim and its negation are both partially warranted, or where neither is warranted yet. As a solution, `Sublation` models truth as a relationship between a **thesis** and an **antithesis**, and derives a **synthesis** from how they interact — allowing states like contradiction and becoming to be detected rather than defined away.

# ✨ Main Features

- **Thesis** and **Antithesis** classes to represent claims and their negations.
- **Synthesis** class to represent the interaction between a thesis and an antithesis.
- Methods to detect **negation**, **contradiction**, **becoming**, and **sublation**.

# ✅ Prerequisites

- Python 3.12+ installed on your machine
- Astral Uv package manager (optional)
- Dependencies listed in `requirements.txt`

# ⚙️ Installation

### For regular use:

```bash
# Clone the repository
git clone https://github.com/germanocastanho/sublation-package
cd sublation-package/

# Create a venv (optional)
python3 -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Install sublation package
pip install -e .
```

### For development:

```bash
# Clone the repository
git clone https://github.com/germanocastanho/sublation-package
cd sublation-package/

# Create a venv (optional)
python3 -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Install sublation package
pip install -e ".[dev]"

# Run full test suite
pytest
```

# 🚀 Quick Start

```python
from sublation import Thesis, Antithesis, Synthesis

t = Thesis(True)
a = Antithesis(True)
s = Synthesis(t, a)

s.contradiction()       # True  — the tension is real and detectable
s.becoming()            # False — this is not a quiet resolution
s.sublation()           # True  — it doesn't collapse into falsehood

# The next round
t2 = s.as_thesis()
```

# 📜 Libre Software

If you have ideas for improvements or new features, please open an issue or submit a pull request! Make sure to follow the existing code style and include tests for any new functionality. This project is licensed under the MIT License. You are free to use, modify, and distribute this software. For more information, please refer to the [LICENSE](LICENSE) file.
