X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2Fcsolver.h;h=54012dee4ae3adf9deafd7b172dd573d539777c0;hp=60e7c6861033e70216aa782238d80c7b8f6c0c43;hb=cbd921ee35b6a29934fd7cecccde7f160228af17;hpb=a79d8bc322e551f909de6757484480bcf6cbc55d diff --git a/src/csolver.h b/src/csolver.h index 60e7c68..54012de 100644 --- a/src/csolver.h +++ b/src/csolver.h @@ -126,7 +126,7 @@ public: /** When everything is done, the client calls this function and then csolver starts to encode*/ int solve(); - + /** After getting the solution from the SAT solver, client can get the value of an element via this function*/ uint64_t getElementValue(Element *element); @@ -139,9 +139,9 @@ public: bool isFalse(BooleanEdge b); void setUnSAT() { model_print("Setting UNSAT %%%%%%\n"); unsat = true; } - void setSatSolverTimeout(long seconds){ satsolverTimeout = seconds;} + void setSatSolverTimeout(long seconds) { satsolverTimeout = seconds;} bool isUnSAT() { return unsat; } - + bool isBooleanVarUsed(){return booleanVarUsed;} void printConstraint(BooleanEdge boolean); void printConstraints(); @@ -161,16 +161,17 @@ public: void replaceBooleanWithBoolean(BooleanEdge oldb, BooleanEdge newb); CSolver *clone(); void serialize(); - static CSolver *deserialize(const char *file); + static CSolver *deserialize(const char *file, InterpreterType itype = SATUNE); void autoTune(uint budget); void inferFixedOrders(); void inferFixedOrder(Order *order); - - + void setInterpreter(InterpreterType type); + bool useInterpreter() {return interpreter != NULL;} void setTuner(Tuner *_tuner) { tuner = _tuner; } long long getElapsedTime() { return elapsedTime; } long long getEncodeTime(); long long getSolveTime(); + long getSatSolverTimeout() { return satsolverTimeout;} CMEMALLOC; @@ -218,10 +219,13 @@ private: SATEncoder *satEncoder; bool unsat; - Tuner *tuner; + bool booleanVarUsed; + Tuner *tuner; long long elapsedTime; - long satsolverTimeout; + long satsolverTimeout; + Interpreter *interpreter; friend class ElementOpt; + friend class VarOrderingOpt; }; inline CompOp flipOp(CompOp op) {