void multiple_versions_cnf()

in include/poac/core/resolver.hpp [140:159]


    void multiple_versions_cnf(const std::vector<int>& clause, std::vector<std::vector<int>>& clauses) {
        const int combinations = 1 << clause.size();
        for (int u = 0; u < combinations; ++u) { // index sequence
            boost::dynamic_bitset<> bs(to_bin_str(u, clause.size()));
            if (bs.count() == 1) {
                continue;
            }

            std::vector<int> new_clause;
            for (std::size_t j = 0; j < bs.size(); ++j) {
                if (bs[j] == 0) {
                    new_clause.push_back(clause[j]);
                }
                else {
                    new_clause.push_back(clause[j] * -1);
                }
            }
            clauses.emplace_back(new_clause);
        }
    }