3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-06 15:25:46 +00:00

revive polynomial superposition (wip)

This commit is contained in:
Jakob Rath 2022-10-07 10:34:07 +02:00
parent 155b746e03
commit dcd6c01a90
5 changed files with 105 additions and 56 deletions

View file

@ -1,15 +1,14 @@
#if 0
/*++
Copyright (c) 2021 Microsoft Corporation
Module Name:
Conflict explanation
Conflict explanation by polynomial superposition
Author:
Nikolaj Bjorner (nbjorner) 2021-03-19
Jakob Rath 2021-04-6
Jakob Rath 2021-04-06
--*/
#pragma once
@ -22,27 +21,18 @@ namespace polysat {
class solver;
class explainer {
friend class conflict;
protected:
class ex_polynomial_superposition {
solver& s;
public:
explainer(solver& s) :s(s) {}
virtual ~explainer() {}
virtual bool try_explain(pvar v, conflict& core) = 0;
};
class ex_polynomial_superposition : public explainer {
private:
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) : explainer(s) {}
bool try_explain(pvar v, conflict& core) override;
ex_polynomial_superposition(solver& s) : s(s) {}
bool perform(pvar v, conflict& core);
};
}
#endif