Merge branch 'hamed' into brian
[satune.git] / src / csolver.c
index ccb19f013f6dad5999c9b1a18a8a8f0c69d6118a..1d31e42558a70bcf1ca3af8be314d0d3ec342762 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,12 +118,12 @@ 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;
 }
 
-Table * createTable(CSolver *solver, Element **domains, uint numDomain, Element * range) {
+Table * createTable(CSolver *solver, Set **domains, uint numDomain, Set * range) {
        Table* table= allocTable(domains,numDomain,range);
        pushVectorTable(solver->allTables, table);
        return table;
@@ -169,3 +170,15 @@ 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();
+       encodeAllSATEncoder(solver, satEncoder);
+       finishedClauses(satEncoder->satSolver);
+       int result= solve(satEncoder->satSolver);
+       model_print("sat_solver's result:%d\n", result);
+       //For now, let's just delete it, and in future for doing queries 
+       //we may need it.
+       deleteSATEncoder(satEncoder);
+}