Commit
e969318 introduced the ICP-based
solver for nonlinear arithmetic. That code, however, depends on LibPoly.
When configuring CVC4 without LibPoly, the code doesn't compile because
the class ICPSolver is missing. This commit adds a dummy version if
ICPSolver to remedy the issue.
include:
- name: production
- config: production --all-bindings --lfsc --editline
+ config: production --all-bindings --lfsc --editline --poly
cache-key: production
python-bindings: true
check-examples: true
exclude_regress: 1-4
- name: debug-cln
- config: debug --symfpu --cln --gpl --no-debug-symbols --no-proofs
+ config: debug --symfpu --cln --gpl --no-debug-symbols --no-proofs --poly
cache-key: debug-cln
os: ubuntu-latest
exclude_regress: 1-4
run: |
${{ matrix.env }} ./configure.sh ${{ matrix.config }} \
--python3 \
- --poly \
--prefix=$(pwd)/build/install \
--unit-testing
#include "theory/arith/nl/icp/icp_solver.h"
-#ifdef CVC4_POLY_IMP
-
#include <iostream>
#include "base/check.h"
namespace nl {
namespace icp {
+#ifdef CVC4_POLY_IMP
+
namespace {
/** A simple wrapper to nicely print an interval assignment. */
struct IAWrapper
}
}
+#else /* CVC4_POLY_IMP */
+
+void ICPSolver::reset(const std::vector<Node>& assertions)
+{
+ Unimplemented() << "ICPSolver requires CVC4 to be configured with LibPoly";
+}
+
+void ICPSolver::check()
+{
+ Unimplemented() << "ICPSolver requires CVC4 to be configured with LibPoly";
+}
+
+#endif /* CVC4_POLY_IMP */
+
} // namespace icp
} // namespace nl
} // namespace arith
} // namespace theory
} // namespace CVC4
-
-#endif
#ifdef CVC4_POLY_IMP
#include <poly/polyxx.h>
+#endif /* CVC4_POLY_IMP */
#include "expr/node.h"
#include "theory/arith/inference_manager.h"
namespace nl {
namespace icp {
+#ifdef CVC4_POLY_IMP
+
/**
* This class implements an ICP-based solver. As it is intended to be used in
* conjunction with other solvers, it only performs contractions, but does not
void check();
};
+#else /* CVC4_POLY_IMP */
+
+class ICPSolver
+{
+ public:
+ ICPSolver(InferenceManager& im) {}
+ void reset(const std::vector<Node>& assertions);
+ void check();
+};
+
+#endif /* CVC4_POLY_IMP */
+
} // namespace icp
} // namespace nl
} // namespace arith
} // namespace CVC4
#endif
-#endif
\ No newline at end of file