Merge branch 'brian' of ssh://demsky.eecs.uci.edu/home/git/constraint_compiler into...
[satune.git] / src / csolver.c
index 5f330fd6112c70074522c17ac116739bf35746d6..985122fc96400948ed543a2306abefba924c289b 100644 (file)
@@ -7,6 +7,7 @@
 #include "order.h"
 #include "table.h"
 #include "function.h"
+#include "satencoder.h"
 
 CSolver * allocCSolver() {
        CSolver * tmp=(CSolver *) ourmalloc(sizeof(CSolver));
@@ -117,7 +118,7 @@ Function * createFunctionOperator(CSolver *solver, ArithOp op, Set ** domain, ui
 }
 
 Predicate * createPredicateOperator(CSolver *solver, CompOp op, Set ** domain, uint numDomain) {
-       Predicate* predicate= allocPredicate(op, domain,numDomain);
+       Predicate* predicate= allocPredicateOperator(op, domain,numDomain);
        pushVectorPredicate(solver->allPredicates, predicate);
        return predicate;
 }
@@ -169,3 +170,18 @@ Boolean * orderConstraint(CSolver *solver, Order * order, uint64_t first, uint64
        pushVectorBoolean(solver->allBooleans,constraint);
        return constraint;
 }
+
+void startEncoding(CSolver* solver){
+       naiveEncodingDecision(solver);
+       SATEncoder* satEncoder = allocSATEncoder();
+       createSolver(satEncoder->satSolver);
+       encodeAllSATEncoder(solver, satEncoder);
+       finishedClauses(satEncoder->satSolver);
+       solve(satEncoder->satSolver);
+       int result= getSolution(satEncoder->satSolver);
+       model_print("sat_solver's result:%d\n", result);
+       killSolver(satEncoder->satSolver);
+       //For now, let's just delete it, and in future for doing queries 
+       //we may need it.
+       deleteSATEncoder(satEncoder);
+}
\ No newline at end of file