Un solveur d'expressions booléenes
Project description
bsolver
bsolver est une bibliothèque Python pour la résolution de problèmes logiques et de contraintes, avec un accent particulier sur la recherche de solutions minimales.
Installation
Installez bsolver et ses dépendances avec pip :
pip install .
Utilisation
Exemple d'importation et d'utilisation :
from bsolver import Var
A, B, C, D = Var("A"), Var("B"), Var("C"), Var("D")
expr = ((A & B)|(~A & C)) & D
# Affichage de la formule (forme FND réduite)
print(expr) # (!A & C & D)|(B & C & D)|(A & B & D)
# Affiche l'arbre ROBDD
expr.print()
# A
# ├── T: B
# │ ├── T: D
# │ └── F: FALSE
# └── F: C
# ├── T: D
# └── F: FALSE
# Affiche la table de verité de l'expression
expr.print_table()
# A | B | C | D | Résultat
# --------------------------
# 0 | 0 | 0 | 0 | 0
# 0 | 0 | 0 | 1 | 0
# 0 | 0 | 1 | 0 | 0
# 0 | 0 | 1 | 1 | 1
# 0 | 1 | 0 | 0 | 0
# 0 | 1 | 0 | 1 | 0
# 0 | 1 | 1 | 0 | 0
# 0 | 1 | 1 | 1 | 1
# 1 | 0 | 0 | 0 | 0
# 1 | 0 | 0 | 1 | 0
# 1 | 0 | 1 | 0 | 0
# 1 | 0 | 1 | 1 | 0
# 1 | 1 | 0 | 0 | 0
# 1 | 1 | 0 | 1 | 1
# 1 | 1 | 1 | 0 | 0
# 1 | 1 | 1 | 1 | 1
# Affiche les solutions de l'expression
expr.print_table(solutions_only=True)
# A | B | C | D | Résultat
# --------------------------
# 0 | * | 1 | 1 | 1
# * | 1 | 1 | 1 | 1
# 1 | 1 | * | 1 | 1
# les solutions peuvent être obtenues et parcourues via la propriété "solutions"
for s in expr.solutions:
env = {var: val for var, val in s}
# Il est possible d'évaluer une expression pour des valeurs de variable données
assert expr.eval(env), f"{env} n'est pas une solution de {expr} ??"
print(f"{env} est bien une solution de {expr}")
# {'D': True, 'B': True, 'A': True} est bien une solution de (A & B & D)|(B & C & D)|(!A & C & D)
# {'D': True, 'C': True, 'B': True} est bien une solution de (A & B & D)|(B & C & D)|(!A & C & D)
# {'D': True, 'C': True, 'A': False} est bien une solution de (A & B & D)|(B & C & D)|(!A & C & D)
# Fixer des variables à des valeurs données
print(expr.fix({'A': True})) # (B & D)
print(expr.fix({'A': True, 'B': True})) # (D)
print(expr.fix({'D': False})) # FALSE
# Verifier l'implication de deux expressions
print(expr.implies(D)) # True
print(expr.implies(A & B)) # False
print(expr.implies(~A | B)) # True
Tests
Lancez les tests avec :
pytest
Licence
Ce projet est sous licence MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bsolver-0.1.0.tar.gz.
File metadata
- Download URL: bsolver-0.1.0.tar.gz
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03109dbe08b62d3b86930ba776d62ccc98666d4fa77d45b3c058741a9d564ff3
|
|
| MD5 |
b6e3b58d96e810c036f8031f07a45f34
|
|
| BLAKE2b-256 |
83620ce1a0bbd39cb33bbd297facd193a53309e68c4059e7793543788433a96c
|
File details
Details for the file bsolver-0.1.0-py3-none-any.whl.
File metadata
- Download URL: bsolver-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0579e2f24d187e5bc47614af77be47b344889da801852e38f95374ef4b4b690
|
|
| MD5 |
ccfdd133b715efaeaa9d1f822d212886
|
|
| BLAKE2b-256 |
2a9c5fe9d93a5f8c16f5b4685a9281db4e4a6cccbf32aab3ed9f1548e1919b06
|