Merge branch 'brian' of ssh://demsky.eecs.uci.edu/home/git/constraint_compiler into...
[satune.git] / src / Test / testcnf.c
1 #include "nodeedge.h"
2 #include <stdio.h>
3
4 int main(int numargs, char ** argv) {
5         CNF *cnf=createCNF();
6         Edge v1=constraintNewVar(cnf);
7         Edge v2=constraintNewVar(cnf);
8         Edge v3=constraintNewVar(cnf);
9         Edge nv1=constraintNegate(v1);
10         printCNF(nv1);
11         printf("\n");
12         Edge nv2=constraintNegate(v2);
13         Edge iff1=constraintIFF(cnf, nv1, v2);
14         printCNF(iff1);
15         printf("\n");
16         Edge iff2=constraintIFF(cnf, nv2, v3);
17         Edge iff3=constraintIFF(cnf, v3, nv1);
18         Edge cand=constraintAND(cnf, 3, (Edge[]) {iff1, iff2, iff3});
19         //Edge cand=constraintAND(cnf, 2, (Edge[]) {iff1, iff2});
20         printCNF(cand);
21         printf("\n");
22         addConstraint(cnf, cand);
23         int value=solveCNF(cnf);
24         if (value==1) {
25                 bool v1v=getValueCNF(cnf, v1);
26                 bool v2v=getValueCNF(cnf, v2);
27                 bool v3v=getValueCNF(cnf, v3);
28                 printf("%d %u %u %u\n", value, v1v, v2v, v3v);
29         } else
30                 printf("%d\n",value);
31         deleteCNF(cnf);
32 }