3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-04 06:15:46 +00:00
z3/src/math/polysat/superposition.h
2022-11-10 14:42:13 +01:00

38 lines
919 B
C++

/*++
Copyright (c) 2021 Microsoft Corporation
Module Name:
Conflict explanation by polynomial superposition
Author:
Nikolaj Bjorner (nbjorner) 2021-03-19
Jakob Rath 2021-04-06
--*/
#pragma once
#include "math/polysat/conflict.h"
#include "math/polysat/constraint.h"
#include "math/polysat/clause_builder.h"
#include "math/polysat/interval.h"
namespace polysat {
class solver;
class ex_polynomial_superposition {
solver& s;
signed_constraint resolve1(pvar v, signed_constraint c1, signed_constraint c2);
lbool find_replacement(signed_constraint c2, pvar v, conflict& core);
void reduce_by(pvar v, conflict& core);
bool reduce_by(pvar, signed_constraint c, conflict& core);
lbool try_explain1(pvar v, conflict& core);
public:
ex_polynomial_superposition(solver& s) : s(s) {}
bool perform(pvar v, conflict& core);
};
}