Edits
[satune.git] / src / csolver.h
index b53b77ba9b9b6ffd565aa1698bc43999cc4f3ffc..2730a934164a7d267bdf26d47f78576671c8c52a 100644 (file)
@@ -5,6 +5,7 @@
 #include "corestructs.h"
 #include "asthash.h"
 #include "solver_interface.h"
+#include "common.h"
 
 class CSolver {
 public:
@@ -18,6 +19,8 @@ public:
 
        Set *createRangeSet(VarType type, uint64_t lowrange, uint64_t highrange);
 
+       VarType getSetVarType(Set *set);
+
        Element *createRangeVar(VarType type, uint64_t lowrange, uint64_t highrange);
 
        /** This function creates a mutable set. */
@@ -26,6 +29,7 @@ public:
 
        /** This function adds a new item to a set. */
 
+       //Deprecating this unless we need it...
        void addItem(MutableSet *set, uint64_t element);
 
        /** This function adds a new unique item to the set and returns it.
@@ -34,6 +38,11 @@ public:
 
        uint64_t createUniqueItem(MutableSet *set);
 
+       /**
+        * Freeze and finalize the mutableSet ...
+        */
+       void finalizeMutableSet(MutableSet *set);
+
        /** This function creates an element variable over a set. */
 
        Element *getElementVar(Set *set);
@@ -41,6 +50,8 @@ public:
        /** This function creates an element constrant. */
        Element *getElementConst(VarType type, uint64_t value);
 
+       Set *getElementRange (Element *element);
+
        BooleanEdge getBooleanTrue();
 
        BooleanEdge getBooleanFalse();
@@ -120,16 +131,18 @@ public:
        bool isTrue(BooleanEdge b);
        bool isFalse(BooleanEdge b);
 
-       void setUnSAT() { unsat = true; }
-
+       void setUnSAT() { model_print("Setting UNSAT %%%%%%\n"); unsat = true; }
        bool isUnSAT() { return unsat; }
 
+       void printConstraint(BooleanEdge boolean);
+       void printConstraints();
+
        Vector<Order *> *getOrders() { return &allOrders;}
-       HashsetOrder * getActiveOrders() { return &activeOrders;}
+       HashsetOrder *getActiveOrders() { return &activeOrders;}
 
        Tuner *getTuner() { return tuner; }
 
-       SetIteratorBooleanEdge * getConstraints() { return constraints.iterator(); }
+       SetIteratorBooleanEdge *getConstraints() { return constraints.iterator(); }
 
        SATEncoder *getSATEncoder() {return satEncoder;}
 
@@ -138,6 +151,7 @@ public:
        void replaceBooleanWithFalse(BooleanEdge bexpr);
        void replaceBooleanWithBoolean(BooleanEdge oldb, BooleanEdge newb);
        CSolver *clone();
+       void serialize();
        void autoTune(uint budget);
 
        void setTuner(Tuner *_tuner) { tuner = _tuner; }
@@ -177,7 +191,7 @@ private:
        Vector<Order *> allOrders;
 
        HashsetOrder activeOrders;
-       
+
        /** This is a vector of all function structs that we have allocated. */
        Vector<Function *> allFunctions;