J'écris un outil qui traite de l'algèbre booléenne. Il s'agit essentiellement d'un outil permettant de créer une machine d'état basée sur un fichier défini par l'utilisateur qui contient des noms d'état, des conditions et des informations de transition. La méthode par laquelle les transitions d'état se produisent consiste essentiellement à regarder une table logique booléenne. par exemple. transition de State1 à STATE2 si:Je recherche une bonne bibliothèque d'algèbre booléenne
(A & B) | (C & ~D) | (E)
J'ai tout cela mis en œuvre, mais maintenant je dois ajouter la possibilité de faire des choses amusantes comme inverser tout le tralala:
~((A & B) | (C & ~D) | (E)) = (via DeMorgan) (~A & ~C & ~E) | (~A & D & ~E) | (~B & ~C & ~E) | (~B & D & ~E)
Le résultat doit être en Disjunctive Normal Form. Fondamentalement, je ne veux pas écrire moi-même et j'espère qu'il y a une bibliothèque quelque part qui sait comment faire face à ce genre de choses. Je suis tombé sur SymPy, mais je ne suis pas sûr qu'il existe un module d'algèbre booléenne.
Mon application est écrite en C (probablement ne devrait pas être), mais tout peut aider.
... Pourquoi ne pas inverser le résultat juste? –
@TomZych - Fondamentalement, toute opération que j'effectue doit se terminer sous la forme de (X & Y) | (W & Z) | ... – BabaBooey
@Tom Zych: Donc en d'autres termes, il semble qu'il cherche quelque chose qui retournera une arborescence d'expression affichable ou une liste de symboles ou autre. –