Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bsolver-0.1.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bsolver-0.1.0-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

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

Hashes for bsolver-0.1.0.tar.gz
Algorithm Hash digest
SHA256 03109dbe08b62d3b86930ba776d62ccc98666d4fa77d45b3c058741a9d564ff3
MD5 b6e3b58d96e810c036f8031f07a45f34
BLAKE2b-256 83620ce1a0bbd39cb33bbd297facd193a53309e68c4059e7793543788433a96c

See more details on using hashes here.

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

Hashes for bsolver-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c0579e2f24d187e5bc47614af77be47b344889da801852e38f95374ef4b4b690
MD5 ccfdd133b715efaeaa9d1f822d212886
BLAKE2b-256 2a9c5fe9d93a5f8c16f5b4685a9281db4e4a6cccbf32aab3ed9f1548e1919b06

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page