diff --git a/src/math/lp/lp_settings.h b/src/math/lp/lp_settings.h index e9ad11ce3..a7a2d96dd 100644 --- a/src/math/lp/lp_settings.h +++ b/src/math/lp/lp_settings.h @@ -136,6 +136,7 @@ struct statistics { unsigned m_dio_rewrite_conflicts = 0; unsigned m_bounds_tightening_conflicts = 0; unsigned m_bounds_tightenings = 0; + unsigned m_nla_throttled_lemmas = 0; ::statistics m_st = {}; void reset() { @@ -173,6 +174,7 @@ struct statistics { st.update("arith-dio-rewrite-conflicts", m_dio_rewrite_conflicts); st.update("arith-bounds-tightening-conflicts", m_bounds_tightening_conflicts); st.update("arith-bounds-tightenings", m_bounds_tightenings); + st.update("arith-nla-throttled-lemmas", m_nla_throttled_lemmas); st.copy(m_st); } }; diff --git a/src/math/lp/nla_core.cpp b/src/math/lp/nla_core.cpp index aa3d131c3..b65729c44 100644 --- a/src/math/lp/nla_core.cpp +++ b/src/math/lp/nla_core.cpp @@ -39,7 +39,8 @@ core::core(lp::lar_solver& s, params_ref const& p, reslimit & lim) : m_emons(m_evars), m_use_nra_model(false), m_nra(s, m_nra_lim, *this), - m_throttle(lra.trail()) { + m_throttle(lra.trail(), + lra.settings().stats()) { m_nlsat_delay_bound = lp_settings().nlsat_delay(); m_throttle.set_enabled(m_params.arith_nl_thrl()); lra.m_find_monics_with_changed_bounds_func = [&](const indexed_uint_set& columns_with_changed_bounds) { diff --git a/src/math/lp/nla_throttle.cpp b/src/math/lp/nla_throttle.cpp index fa6794fad..83f32c9ec 100644 --- a/src/math/lp/nla_throttle.cpp +++ b/src/math/lp/nla_throttle.cpp @@ -76,6 +76,7 @@ bool nla_throttle::insert_new(throttle_kind k, lpvar monic_var, lpvar x_var, lpv bool nla_throttle::insert_new_impl(const signature& sig) { if (m_seen.contains(sig)) { TRACE(nla_solver, tout << "throttled lemma generation\n";); + m_stats.m_nla_throttled_lemmas++; return true; // Already seen, throttle } diff --git a/src/math/lp/nla_throttle.h b/src/math/lp/nla_throttle.h index 27c50706d..4c580b457 100644 --- a/src/math/lp/nla_throttle.h +++ b/src/math/lp/nla_throttle.h @@ -7,6 +7,7 @@ --*/ #pragma once #include "math/lp/nla_defs.h" +#include "math/lp/lp_settings.h" #include "util/hashtable.h" #include "util/trail.h" #include @@ -47,10 +48,11 @@ private: hashtable> m_seen; trail_stack& m_trail; + lp::statistics& m_stats; bool m_enabled = true; public: - nla_throttle(trail_stack& trail) : m_trail(trail) {} + nla_throttle(trail_stack& trail, lp::statistics& stats) : m_trail(trail), m_stats(stats) {} void set_enabled(bool enabled) { m_enabled = enabled; } bool enabled() const { return m_enabled; }