- ERRPRINT("Iteration %d\n", iteration++);
- ERRPRINT("Satcount: %f\n", sylvan_satcount(old, init->vars.varset));
- trans_t *t = rls->rell;
-
- while (t != NULL){
- new = sylvan_or(new, sylvan_relnext(new, t->bdd, t->varset.varset));
- t = t->next_rel;
- }
- t = rls->relu;
- while (t != NULL){
- new = sylvan_or(new, sylvan_relnext(new, t->bdd, t->varset.varset));
- t = t->next_rel;
- }
- t = rls->relr;
- while (t != NULL){
- new = sylvan_or(new, sylvan_relnext(new, t->bdd, t->varset.varset));
- t = t->next_rel;
- }
- t = rls->reld;
- while (t != NULL){
- new = sylvan_or(new, sylvan_relnext(new, t->bdd, t->varset.varset));
- t = t->next_rel;
- }
+ if(sylvan_satcount(sylvan_and(goal->bdd, new), init->vars.varset) > 0){
+ found = true;
+ break;
+ }
+
+ //Left, Up, Right, Down moves
+ new = subsolve(rls->rell, new);
+ new = subsolve(rls->relu, new);
+ new = subsolve(rls->relr, new);
+ new = subsolve(rls->reld, new);