Introduction¶
The C++ library kitty provides data structures and algorithms for
truth table manipulation. A truth table is represented in terms of
64-bit words, where each bit in the word represents a function value.
For example, the truth table for the function \(x_0 \land x_1\) is
0x8 (which is 1000 in base 2) and the truth table for the
function \(\langle x_0x_1x_2\rangle\) is 0xe8 (which is
11101000 in base 2). A single 64-bit word can represent functions
with up to 6 variables. To store functions with 7 variables, one
needs two words, for 8 variables one needs 4 words, and so on.
Two main data structures are provided in kitty to represent truth
tables: static_truth_table and dynamic_truth_table. The
choice to take which depends on whether one knows the number of
variables at compile-time or not. The structure
static_truth_table is parameterized by a template argument for the
number of variables, dynamic_truth_table retrieves this
information as constructor argument.