mirror of
https://github.com/Z3Prover/z3
synced 2025-08-06 03:10:25 +00:00
adding BDD-based variable elimination routine
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
09fdfcc963
commit
d36406f845
8 changed files with 372 additions and 3 deletions
61
src/sat/sat_elim_vars.h
Normal file
61
src/sat/sat_elim_vars.h
Normal file
|
@ -0,0 +1,61 @@
|
|||
/*++
|
||||
Copyright (c) 2017 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
sat_elim_vars.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Helper class for eliminating variables
|
||||
|
||||
Author:
|
||||
|
||||
Nikolaj Bjorner (nbjorner) 2017-10-14
|
||||
|
||||
Revision History:
|
||||
|
||||
--*/
|
||||
#ifndef SAT_ELIM_VARS_H_
|
||||
#define SAT_ELIM_VARS_H_
|
||||
|
||||
#include "sat/sat_types.h"
|
||||
#include "sat/sat_bdd.h"
|
||||
|
||||
namespace sat {
|
||||
class solver;
|
||||
class simplifier;
|
||||
|
||||
class elim_vars {
|
||||
friend class simplifier;
|
||||
|
||||
simplifier& simp;
|
||||
solver& s;
|
||||
bdd_manager m;
|
||||
|
||||
svector<bool_var> m_vars;
|
||||
unsigned_vector m_mark;
|
||||
unsigned m_mark_lim;
|
||||
unsigned_vector m_var2index;
|
||||
|
||||
unsigned m_max_literals;
|
||||
|
||||
unsigned num_vars() const { return m_vars.size(); }
|
||||
void reset_mark();
|
||||
void mark_var(bool_var v);
|
||||
bool mark_literals(clause_use_list & occs);
|
||||
bool mark_literals(literal lit);
|
||||
bdd make_clauses(clause_use_list & occs);
|
||||
bdd make_clauses(literal lit);
|
||||
bdd mk_literal(literal l);
|
||||
void get_clauses(bdd const& b, literal_vector& lits, clause_vector& clauses, literal_vector& units);
|
||||
void add_clauses(bdd const& b, literal_vector& lits);
|
||||
|
||||
public:
|
||||
elim_vars(simplifier& s);
|
||||
bool operator()(bool_var v);
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue