3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-31 03:32:28 +00:00

fixup proof log annotations of rules

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2025-10-19 10:04:18 +02:00
parent 6485808b49
commit 65f38eac16
7 changed files with 49 additions and 42 deletions

View file

@ -724,13 +724,16 @@ namespace smt {
auto bjust = ctx.mk_justification(just);
if (ctx.clause_proof_active()) {
// assume all justifications is a non-empty list of symbol parameters
// proof logging is basically broken: it doesn't log propagations, but instead
// only propagations that are processed by conflict resolution.
// this misses conflicts at base level.
proof_ref pr(m);
expr_ref_vector args(m);
for (unsigned i = 1; i < ax.params.size(); ++i)
args.push_back(m.mk_app(ax.params[i].get_symbol(), 0, nullptr, m.mk_proof_sort()));
pr = m.mk_app(ax.params[0].get_symbol(), args.size(), args.data(), m.mk_proof_sort());
for (auto const& p : ax.params)
args.push_back(m.mk_const(p.get_symbol(), m.mk_proof_sort()));
pr = m.mk_app(m.get_family_name(get_family_id()), args.size(), args.data(), m.mk_proof_sort());
justification_proof_wrapper jp(ctx, pr.get(), false);
ctx.get_clause_proof().propagate(lit, jp, antecedent);
ctx.get_clause_proof().propagate(lit, &jp, antecedent);
jp.del_eh(m);
}
ctx.assign(lit, bjust);