mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 11:55:51 +00:00
add EUF plugin framework.
plugin setting allows adding equality saturation within the E-graph propagation without involving externalizing theory solver dispatch. It makes equality saturation independent of SAT integration. Add a special relation operator to support ad-hoc AC symbols.
This commit is contained in:
parent
5784c2da79
commit
b52fd8d954
28 changed files with 3063 additions and 68 deletions
|
@ -28,6 +28,7 @@ Author:
|
|||
#include "sat/smt/fpa_solver.h"
|
||||
#include "sat/smt/dt_solver.h"
|
||||
#include "sat/smt/recfun_solver.h"
|
||||
#include "sat/smt/specrel_solver.h"
|
||||
|
||||
namespace euf {
|
||||
|
||||
|
@ -130,6 +131,7 @@ namespace euf {
|
|||
arith_util arith(m);
|
||||
datatype_util dt(m);
|
||||
recfun::util rf(m);
|
||||
special_relations_util sp(m);
|
||||
if (pb.get_family_id() == fid)
|
||||
ext = alloc(pb::solver, *this, fid);
|
||||
else if (bvu.get_family_id() == fid)
|
||||
|
@ -144,6 +146,8 @@ namespace euf {
|
|||
ext = alloc(dt::solver, *this, fid);
|
||||
else if (rf.get_family_id() == fid)
|
||||
ext = alloc(recfun::solver, *this);
|
||||
else if (sp.get_family_id() == fid)
|
||||
ext = alloc(specrel::solver, *this, fid);
|
||||
|
||||
if (ext)
|
||||
add_solver(ext);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue