3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-30 12:25:51 +00:00
z3/src/math/polysat/forbidden_intervals.h
2021-09-08 16:51:16 +02:00

28 lines
824 B
C++

/*++
Copyright (c) 2021 Microsoft Corporation
Module Name:
Conflict explanation using forbidden intervals as described in
"Solving bitvectors with MCSAT: explanations from bits and pieces"
by S. Graham-Lengrand, D. Jovanovic, B. Dutertre.
Author:
Nikolaj Bjorner (nbjorner) 2021-03-19
Jakob Rath 2021-04-6
--*/
#pragma once
#include "math/polysat/constraint.h"
#include "math/polysat/solver.h"
namespace polysat {
class forbidden_intervals {
void full_interval_conflict(signed_constraint c, signed_constraint neg_cond, clause_builder& lemma);
bool get_interval(solver& s, signed_constraint const& c, pvar v, eval_interval& out_interval, signed_constraint& out_neg_cond);
public:
bool perform(solver& s, pvar v, conflict_core& core, clause_builder& lemma);
};
}