New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reimplement expression trees in C/C++ #98

cjdrake opened this Issue Jun 29, 2014 · 1 comment


None yet
1 participant

cjdrake commented Jun 29, 2014

This is an area that really needs as much performance as possible. Very large Boolean functions (see the AES code) are just too overwhelming for Python to handle.

@cjdrake cjdrake added the Feature label Jun 29, 2014

@cjdrake cjdrake changed the title from Reimplement expression trees in C to Reimplement expression trees in C/C++ Jul 28, 2014


This comment has been minimized.


cjdrake commented Dec 29, 2014

Making some progress here, but still some work to do. Listing some stuff I would like to finish before doing a release.

Must Have:

  • Simplification
  • BoolExpr DFS iterator (for support/inputs)
  • BoolExpr hash table {int: BoolExpr *} (for compose/restrict)
  • SAT integration, with assumptions
  • Minimization (Espresso) integration, cube/cover representation
  • DIMACS conversion
  • Unicode and LaTeX string conversions
  • Shannon expansion
  • 100% unit test coverage
  • Tseitin encoding
  • Equivalence (heuristic)
  • Splitting variable (heuristic)
  • Negation Normal Form
  • Conjunctive/Disjunctive Normal Form
  • to_dot graphviz conversion
  • Complete Sum

Nice to Have:

  • Canonical CNF/DNF
  • Algebraic Normal Form (ANF)
  • Native Majority / Minority operators

@cjdrake cjdrake added this to the 0.27 milestone Dec 29, 2014

@cjdrake cjdrake closed this Feb 26, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment