GitHunt
LS

Actions Status
Actions Status
Actions Status
Documentation Status
Latest release
License: MIT

kitty

kitty is a C++-17 truth table library. It provides efficient implementations for basic truth table manipulations and various algorithms.

Read the full documentation.

Example

The following code snippet generates truth tables for the 3-variable functions sum and carry for a 1-bit full-adder with carry.

#include <kitty/kitty.hpp>

dynamic_truth_table a( 3 ), b( 3 ), c( 3 );

create_nth_var( a, 0 );
create_nth_var( b, 1 );
create_nth_var( c, 2 );

const auto sum = a ^ b ^ c;
const auto carry = ternary_majority( a, b, c );

One can use static_truth_table instead of dynamic_truth_table, if the number of variables is known at compile-time. The interface stays the same.

#include <kitty/kitty.hpp>

static_truth_table<3> a, b, c;

create_nth_var( a, 0 );
create_nth_var( b, 1 );
create_nth_var( c, 2 );

const auto sum = a ^ b ^ c;
const auto carry = ternary_majority( a, b, c );

EPFL logic sythesis libraries

kitty is part of the EPFL logic synthesis libraries. The other libraries and several examples on how to use and integrate the libraries can be found in the logic synthesis tool showcase.

Languages

C++99.8%CMake0.2%
MIT License
Created September 21, 2017
Updated February 20, 2026
lsils/kitty | GitHunt