C++ ESOP library
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bench CMake. Oct 18, 2018
docs docs. Sep 7, 2018
include/easy zdd_perm_product. Oct 22, 2018
lib restructured. Oct 2, 2018
programs read_fns. Oct 18, 2018
test zdd_cubeset. Oct 19, 2018
.clang-format clang-format. Sep 6, 2018
.gitignore gitignore. May 16, 2018
.gitmodules restructured. Oct 2, 2018
.travis.yml travis. Oct 1, 2018
CMakeLists.txt Update to C++17. Oct 19, 2018
LICENSE Initial commit Jan 1, 2018
README.md Update README.md Sep 7, 2018
easy.svg logo. Jun 19, 2018

README.md

Build Status Documentation Status License: MIT

easy

easy is a C++ library for verification and synthesis of exclusive-or sum-of-product (ESOP) forms.

Read the full documentation.

Usage

Generate all minimum ESOP forms for the (completely-specified) Boolean function 0xcafeaffe (01111111111101010111111101010011)

./enum_esops --all --echo --repr=expr <<< "0xcafeaffe"

Output:

01111111111101010111111101010011 [...] 5 (x1*~x2*~x3*~x4)⊕(x0*~x3*x4)⊕(x0*~x1*x2*x3)⊕(x0*~x2)⊕(~x0)
01111111111101010111111101010011 [...] 5 (x1*~x2*~x3*~x4)⊕(x0*~x3*~x4)⊕(x0*~x2*~x3)⊕(x0*x1*x2*x3)⊕(1)
01111111111101010111111101010011 [...] 5 (x1*~x2*~x3*~x4)⊕(x0*~x3*x4)⊕(x0*x2*~x3)⊕(x0*x1*x2*x3)⊕(1)
01111111111101010111111101010011 [...] 5 (x1*~x2*~x3*~x4)⊕(x0*x2*~x3*~x4)⊕(x0*~x2*~x3*x4)⊕(x0*x1*x2*x3)⊕(1)
01111111111101010111111101010011 [...] 5 (x1*~x2*~x3*~x4)⊕(x0*~x3*x4)⊕(x0*~x1*x2*x3)⊕(~x2)⊕(~x0*x2)
01111111111101010111111101010011 [...] 5 (x1*~x2*~x3*~x4)⊕(x0*~x3*x4)⊕(x0*~x1*x2*~x3)⊕(x0*x1*x2)⊕(1)
01111111111101010111111101010011 [...] 5 (x1*~x2*~x3*~x4)⊕(x0*~x3*x4)⊕(x0*~x1*x2*x3)⊕(x0*x2)⊕(1)

Generate all minimum ESOP forms and verify results

./enum_esops --all --repr=cube <<< "0xcafeaffe" | ./verify_esops --echo --summary

Output:

01111111111101010111111101010011 [...] -1000 1--01 1011- 1-0-- 0---- OK
01111111111101010111111101010011 [...] -1000 1--00 1-00- 1111- ----- OK
01111111111101010111111101010011 [...] -1000 1--01 1-10- 1111- ----- OK
01111111111101010111111101010011 [...] -1000 1-100 1-001 1111- ----- OK
01111111111101010111111101010011 [...] -1000 1--01 1011- --0-- 0-1-- OK
01111111111101010111111101010011 [...] -1000 1--01 1010- 111-- ----- OK
01111111111101010111111101010011 [...] -1000 1--01 1011- 1-1-- ----- OK
[i] total number of errors: 0

Generate all minimum ESOP forms for the (incompletely-specified) Boolean function 0xcafe (0111111101010011) with care function 0xaffe (0111111111110101)

./enum_esops --all --echo --repr=expr <<< "0xcafe 0xaffe"

Output:

0111111101010011 0111111111110101 3 (~x1*~x2*~x3)⊕(~x0*x2*~x3)⊕(x3)
0111111101010011 0111111111110101 3 (~x0*~x1*~x2*~x3)⊕(~x0*x2*~x3)⊕(x3)
0111111101010011 0111111111110101 3 (~x0*x1*x2*~x3)⊕(~x0*~x1*~x3)⊕(x3)
0111111101010011 0111111111110101 3 (~x0*x1*~x2*~x3)⊕(~x0*~x3)⊕(x3)
0111111101010011 0111111111110101 3 (x1*~x2*~x3)⊕(~x0*~x3)⊕(x3)
0111111101010011 0111111111110101 3 (x1*~x2*~x3)⊕(x0*x3)⊕(~x0)
0111111101010011 0111111111110101 3 (~x0*x1*~x2*~x3)⊕(x0*x3)⊕(~x0)
0111111101010011 0111111111110101 3 (x1*~x2*~x3)⊕(x0*~x3)⊕(1)
0111111101010011 0111111111110101 3 (~x0*x1*~x2*~x3)⊕(x0*~x3)⊕(1)
0111111101010011 0111111111110101 3 (~x0*x1*~x2*~x3)⊕(x0*x2*~x3)⊕(1)
0111111101010011 0111111111110101 3 (x1*~x2*~x3)⊕(x0*x2*~x3)⊕(1)

External libraries