in include/poac/core/resolver.hpp [218:238]
Resolved solve_sat(const Activated& activated, const std::vector<std::vector<int>>& clauses) {
Resolved resolved_deps{};
// deps.activated.size() == variables
const auto [result, assignments] = sat::solve(clauses, activated.size());
if (result == sat::Sat::completed) {
io::cli::debugln("SAT");
for (const auto& a : assignments) {
io::cli::debug(a, " ");
if (a > 0) {
const auto dep = activated[a - 1];
resolved_deps.activated.push_back(dep);
resolved_deps.backtracked[dep.name] = { {dep.version}, {dep.source} };
}
}
io::cli::debugln(0);
}
else {
throw exception::error("Could not solve in this dependencies.");
}
return resolved_deps;
}