BitCircuits
Boolean circuit tree implementation that uses bit strings to cache evaluation results and bitwise operations to evaluate new circuits based on existing trees.
API
The API is very simple. Trees consist of Operation
s (interior nodes),
Variable
s, and Constant
s (both of which are leaf nodes). Right now all
operations are functions of two parameters.
Variable
The constructor takes a single parameter, an integer in [0,5]
(there are six
possible variables.
Constant
The constructor takes a single boolean.
Operation
The constructor takes a function to apply, this must be a bitwise function that can operate on integers, and two sub-trees, to which the function will be applied.
evaluate
Evaluates a tree for a given set of variable values. The variable values are specified as a bit string, where variable 5 is the high order bit and variable 0 is the low order bit.
equal
Determine whether two trees describe the same function.
Examples
using BitCircuits
and(left, right) = left & right
or(left, right) = left | right
a = Variable(0)
b = Variable(1)
p = Operation(or, a, b) # p = a + b
q = Operation(and, a, b) # q = ab
r = Operation(and, a, p) # r = a(a + b)
evaluate(p, 0b000010) # true
evaluate(p, 0b000000) # false
equal(p, q) # false