3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-29 18:52:29 +00:00

remove ad-hoc membership axioms, enable boundary point saturatino

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2025-10-23 09:42:25 +02:00
parent 2e4402c8f3
commit b96624727d
3 changed files with 6 additions and 12 deletions

View file

@ -3340,8 +3340,11 @@ proof * ast_manager::mk_th_lemma(
proof_ref pr(*this);
ptr_buffer<expr> args;
vector<parameter> parameters;
parameters.push_back(parameter(get_family_name(tid)));
for (unsigned i = 0; i < num_params; ++i) {
auto const &p = params[i];
parameters.push_back(p);
if (p.is_symbol())
args.push_back(mk_app(p.get_symbol(), 0, nullptr, mk_proof_sort()));
else if (p.is_ast() && is_expr(p.get_ast()))
@ -3356,7 +3359,7 @@ proof * ast_manager::mk_th_lemma(
args.push_back(pr.get());
args.append(num_proofs, (expr**) proofs);
args.push_back(fact);
return mk_app(basic_family_id, PR_TH_LEMMA, 0, nullptr, args.size(), args.data());
return mk_app(basic_family_id, PR_TH_LEMMA, parameters.size(), parameters.data(), args.size(), args.data());
}
proof* ast_manager::mk_hyper_resolve(unsigned num_premises, proof* const* premises, expr* concl,

View file

@ -175,22 +175,13 @@ void finite_set_axioms::in_singleton_axiom(expr* a) {
if (!u.is_singleton(a, b))
return;
arith_util arith(m);
expr_ref b_in_a(u.mk_in(b, a), m);
auto ax = alloc(theory_axiom, m, "in-singleton");
ax->clause.push_back(b_in_a);
m_add_clause(ax);
ax = alloc(theory_axiom, m, "in-singleton");
expr_ref bm1_in_a(u.mk_in(arith.mk_add(b, arith.mk_int(-1)), a), m);
ax->clause.push_back(m.mk_not(bm1_in_a));
m_add_clause(ax);
ax = alloc(theory_axiom, m, "in-singleton");
expr_ref bp1_in_a(u.mk_in(arith.mk_add(b, arith.mk_int(1)), a), m);
ax->clause.push_back(m.mk_not(bp1_in_a));
}

View file

@ -282,7 +282,7 @@ namespace smt {
if (activate_unasserted_clause())
return FC_CONTINUE;
if (false && activate_range_local_axioms())
if (activate_range_local_axioms())
return FC_CONTINUE;
if (assume_eqs())