3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-10 03:07:07 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-04-06 16:33:00 -07:00
parent bcbc774b79
commit 6761bf1495
3 changed files with 17 additions and 1 deletions

View file

@ -880,6 +880,17 @@ namespace datalog {
return r;
}
bool context::is_monotone() {
try {
m_rule_properties.check_for_negated_predicates();
return true;
}
catch (...) {
return false;
}
}
lbool context::query_from_lvl (expr* query, unsigned lvl) {
m_mc = mk_skip_model_converter();
m_last_status = OK;

View file

@ -528,6 +528,8 @@ namespace datalog {
*/
model_ref get_model();
bool is_monotone();
/**
\brief retrieve proof from derivation of the query.

View file

@ -266,7 +266,10 @@ class horn_tactic : public tactic {
switch (is_reachable) {
case l_true: {
// goal is unsat
if (produce_proofs) {
if (!m_ctx.is_monotone()) {
is_reachable = l_undef;
}
else if (produce_proofs) {
proof_ref proof = m_ctx.get_proof();
pc = proof2proof_converter(m, proof);
g->assert_expr(m.get_fact(proof), proof, nullptr);