3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-02-20 07:24:40 +00:00

base implementation for cardinality constraints

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2025-10-26 10:35:37 +01:00
parent 4068460a0f
commit f8b2268424
8 changed files with 552 additions and 15 deletions

View file

@ -3356,8 +3356,8 @@ proof * ast_manager::mk_th_lemma(
}
pr = mk_app(get_family_name(tid), args.size(), args.data(), mk_proof_sort());
args.reset();
args.push_back(pr.get());
args.append(num_proofs, (expr**) proofs);
args.push_back(pr.get());
args.push_back(fact);
return mk_app(basic_family_id, PR_TH_LEMMA, parameters.size(), parameters.data(), args.size(), args.data());
}

View file

@ -2328,7 +2328,7 @@ public:
unsigned get_num_parents(proof const * p) const {
SASSERT(is_proof(p));
unsigned n = p->get_num_args();
return !has_fact(p) ? n : n - 1;
return p->get_decl()->get_decl_kind() == PR_TH_LEMMA ? n - 2 : !has_fact(p) ? n : n - 1;
}
proof * get_parent(proof const * p, unsigned idx) const { SASSERT(is_proof(p)); return to_app(p->get_arg(idx)); }
proof * mk_true_proof();

View file

@ -12,6 +12,7 @@ Abstract:
--*/
#pragma once
#include "ast/rewriter/th_rewriter.h"
struct theory_axiom {