00001
00002
00003
00004
00005
00006
00007
00008 #ifndef UNSATCOREFINDER_H_
00009 #define UNSATCOREFINDER_H_
00010
00011 class CNode;
00012
00013 #include <set>
00014 using namespace std;
00015
00016 class UnsatCoreFinder {
00017 private:
00018 CNode* orig_node;
00019 CNode* unsat_core;
00020
00021 int num_queries;
00022 CNode* most_difficult_clause;
00023 int diff_clause_time;
00024 int total_time;
00025
00026 int start_time;
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 const set<CNode*>& must_assignments;
00039
00040 public:
00041 UnsatCoreFinder(CNode* c, set<CNode*>& must_assignments);
00042 CNode* get_unsat_core();
00043 virtual ~UnsatCoreFinder();
00044 private:
00045 CNode* find_unsat_core(CNode* assumption, CNode* c);
00046 void begin_query();
00047 void end_query(CNode* clause);
00048 };
00049
00050 #endif