mirror of
https://github.com/Z3Prover/z3
synced 2025-11-05 05:49:13 +00:00
add options for logging learned lemmas and theory axioms
- add solver.axioms2files - prints negated theory axioms to files. Each file should be unsat - add solver.lemmas2console - prints lemmas to the console. - remove option smt.arith.dump_lemmas. It is replaced by solver.axioms2files
This commit is contained in:
parent
410eed9bd5
commit
63f48f8fd4
32 changed files with 260 additions and 319 deletions
|
|
@ -2331,7 +2331,6 @@ public:
|
|||
literal_vector m_core2;
|
||||
|
||||
void assign(literal lit, literal_vector const& core, svector<enode_pair> const& eqs, vector<parameter> const& params) {
|
||||
dump_assign(lit, core, eqs);
|
||||
if (core.size() < small_lemma_size() && eqs.empty()) {
|
||||
m_core2.reset();
|
||||
for (auto const& c : core) {
|
||||
|
|
@ -2349,7 +2348,7 @@ public:
|
|||
ctx().assign(
|
||||
lit, ctx().mk_justification(
|
||||
ext_theory_propagation_justification(
|
||||
get_id(), ctx().get_region(), core.size(), core.data(),
|
||||
get_id(), ctx(), core.size(), core.data(),
|
||||
eqs.size(), eqs.data(), lit, params.size(), params.data())));
|
||||
}
|
||||
}
|
||||
|
|
@ -2942,8 +2941,6 @@ public:
|
|||
}
|
||||
|
||||
|
||||
bool dump_lemmas() const { return params().m_arith_dump_lemmas; }
|
||||
|
||||
bool propagate_eqs() const { return params().m_arith_propagate_eqs && m_num_conflicts < params().m_arith_propagation_threshold; }
|
||||
|
||||
bound_prop_mode propagation_mode() const { return m_num_conflicts < params().m_arith_propagation_threshold ? params().m_arith_bound_prop : bound_prop_mode::BP_NONE; }
|
||||
|
|
@ -3079,7 +3076,7 @@ public:
|
|||
justification* js =
|
||||
ctx().mk_justification(
|
||||
ext_theory_eq_propagation_justification(
|
||||
get_id(), ctx().get_region(), m_core.size(), m_core.data(), m_eqs.size(), m_eqs.data(), x, y));
|
||||
get_id(), ctx(), m_core.size(), m_core.data(), m_eqs.size(), m_eqs.data(), x, y));
|
||||
|
||||
TRACE("arith",
|
||||
for (auto c : m_core)
|
||||
|
|
@ -3203,12 +3200,11 @@ public:
|
|||
set_evidence(ev.ci(), m_core, m_eqs);
|
||||
|
||||
// SASSERT(validate_conflict(m_core, m_eqs));
|
||||
dump_conflict(m_core, m_eqs);
|
||||
if (is_conflict) {
|
||||
ctx().set_conflict(
|
||||
ctx().mk_justification(
|
||||
ext_theory_conflict_justification(
|
||||
get_id(), ctx().get_region(),
|
||||
get_id(), ctx(),
|
||||
m_core.size(), m_core.data(),
|
||||
m_eqs.size(), m_eqs.data(), m_params.size(), m_params.data())));
|
||||
}
|
||||
|
|
@ -3414,11 +3410,6 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
void dump_conflict(literal_vector const& core, svector<enode_pair> const& eqs) {
|
||||
if (dump_lemmas()) {
|
||||
ctx().display_lemma_as_smt_problem(core.size(), core.data(), eqs.size(), eqs.data(), false_literal);
|
||||
}
|
||||
}
|
||||
|
||||
bool validate_conflict(literal_vector const& core, svector<enode_pair> const& eqs) {
|
||||
if (params().m_arith_mode != arith_solver_id::AS_NEW_ARITH) return true;
|
||||
|
|
@ -3432,13 +3423,6 @@ public:
|
|||
return result;
|
||||
}
|
||||
|
||||
void dump_assign(literal lit, literal_vector const& core, svector<enode_pair> const& eqs) {
|
||||
if (dump_lemmas()) {
|
||||
unsigned id = ctx().display_lemma_as_smt_problem(core.size(), core.data(), eqs.size(), eqs.data(), lit);
|
||||
(void)id;
|
||||
}
|
||||
}
|
||||
|
||||
bool validate_assign(literal lit, literal_vector const& core, svector<enode_pair> const& eqs) {
|
||||
if (params().m_arith_mode != arith_solver_id::AS_NEW_ARITH) return true;
|
||||
scoped_arith_mode _sa(ctx().get_fparams());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue