void add_entries_from_permutation( binary_truth_table& spec, const std::vector<unsigned>& permutation ) { using boost::combine; using boost::irange; using boost::get; unsigned n = (unsigned)ceil( log( permutation.size() ) / log( 2 ) ); for ( const auto& i : combine( irange( 0u, (unsigned)permutation.size() ), permutation ) ) { spec.add_entry( number_to_truth_table_cube( get<0>( i ), n ), number_to_truth_table_cube( get<1>( i ), n ) ); } }