df80fa73a50239a8a83d4fb56916917f68f5dbdd
[satune.git] / src / Test / logicopstest.cc
1 #include "csolver.h"
2
3 /**
4  * b1 AND b2=>b3
5  * !b3 OR b4
6  * b1 XOR b4
7  * Result: b1=1 b2=0 b3=0 b4=0
8  */
9 int main(int numargs, char **argv) {
10         CSolver *solver = new CSolver();
11         Boolean *b1 = solver->getBooleanVar(0);
12         Boolean *b2 = solver->getBooleanVar(0);
13         Boolean *b3 = solver->getBooleanVar(0);
14         Boolean *b4 = solver->getBooleanVar(0);
15         //L_AND, L_OR, L_NOT, L_XOR, L_IMPLIES
16         Boolean * barray1[]={b1,b2};
17         Boolean *andb1b2 = solver->applyLogicalOperation(L_AND, barray1, 2);
18         Boolean * barray2[]={andb1b2, b3};
19         Boolean *imply = solver->applyLogicalOperation(L_IMPLIES, barray2, 2);
20         solver->addConstraint(imply);
21         Boolean * barray3[] ={b3};
22         Boolean *notb3 = solver->applyLogicalOperation(L_NOT, barray3, 1);
23         Boolean * barray4[] ={notb3, b4};
24         solver->addConstraint(solver->applyLogicalOperation(L_OR, barray4, 2));
25         Boolean * barray5[] ={b1, b4};
26         solver->addConstraint(solver->applyLogicalOperation(L_XOR, barray5, 2));
27         if (solver->startEncoding() == 1)
28                 printf("b1=%d b2=%d b3=%d b4=%d\n",
29                                          solver->getBooleanValue(b1), solver->getBooleanValue(b2),
30                                          solver->getBooleanValue(b3), solver->getBooleanValue(b4));
31         else
32                 printf("UNSAT\n");
33         delete solver;
34 }