#include "structs.h"
#include "set.h"
#include "boolean.h"
+#include "ordergraph.h"
Order *allocOrder(OrderType type, Set *set) {
Order *This = (Order *)ourmalloc(sizeof(Order));
resetAndDeleteHashTableOrderPair(This->orderPairTable);
deleteHashTableOrderPair(This->orderPairTable);
}
+ if (This->graph != NULL) {
+ deleteOrderGraph(This->graph);
+ }
ourfree(This);
}
ourfree(tab->zero); \
tab->zero = NULL; \
} \
- tab->size = 0; \
- } \
- \
+ tab->size = 0; \
+ } \
+ \
void reset ## Name(HashTable ## Name * tab) { \
memset(tab->table, 0, tab->capacity * sizeof(struct hashlistnode ## Name)); \
if (tab->zero) { \
}
resetAndDeleteHashTableNodeToNodeSet(table);
+ deleteHashTableNodeToNodeSet(table);
resetNodeInfoStatusSCC(graph);
deleteVectorArrayOrderNode(&sccNodes);
deleteVectorArrayOrderNode(&finishNodes);
}
resetAndDeleteHashTableNodeToNodeSet(table);
+ deleteHashTableNodeToNodeSet(table);
}
/* This function finds edges that would form a cycle with must edges
_1to2->polPos = true;
addNewOutgoingEdge(node1, _1to2);
addNewIncomingEdge(node2, _1to2);
- if (constr->base.polarity == BV_MUSTBETRUE)
+ if (constr->base.boolVal == BV_MUSTBETRUE)
break;
}
case BV_MUSTBEFALSE: {
deleteOrderEdge(edge);
}
deleteIterOrderEdge(eiterator);
+ deleteHashSetOrderNode(graph->nodes);
+ deleteHashSetOrderEdge(graph->edges);
ourfree(graph);
}
addConstraint(solver, b1);
addConstraint(solver, b2);
if (startEncoding(solver) == 1)
- printf("O(5,1)=%d O(1,4)=%d O(5,4)=%d O(1,5)=%d O(1111,5)=%d\n",
- getOrderConstraintValue(solver, order, 5, 1),
- getOrderConstraintValue(solver, order, 1, 4),
- getOrderConstraintValue(solver, order, 5, 4),
- getOrderConstraintValue(solver, order, 1, 5),
- getOrderConstraintValue(solver, order, 1111, 5));
+ printf("SAT\n");
else
printf("UNSAT\n");
deleteSolver(solver);
-}
\ No newline at end of file
+}