diff --git a/src/nlsat/nlsat_explain.cpp b/src/nlsat/nlsat_explain.cpp index 83c5f31b6..3d124864b 100644 --- a/src/nlsat/nlsat_explain.cpp +++ b/src/nlsat/nlsat_explain.cpp @@ -1226,6 +1226,7 @@ namespace nlsat { * https://arxiv.org/abs/2003.00409 */ void project_cdcac(polynomial_ref_vector & ps, var max_x) { + bool first = true; if (ps.empty()) return; @@ -1256,9 +1257,17 @@ namespace nlsat { } TRACE(nlsat_explain, tout << "project loop, processing var "; display_var(tout, x); tout << "\npolynomials\n"; display(tout, ps); tout << "\n";); - add_lcs(ps, x); - psc_discriminant(ps, x); - psc_resultant(ps, x); + if (first) { + add_lcs(ps, x); + psc_discriminant(ps, x); + psc_resultant(ps, x); + first = false; + } + else { + add_lcs(ps, x); + psc_discriminant(ps, x); + psc_resultant_sample(ps, x, samples); + } if (m_todo.empty()) break;