edges[++lowindex]=edges[initindex];
}
lowindex++; //Make lowindex look like size
-
+
if (lowindex==1)
return edges[0];
void addConstraintCNF(CNF *cnf, Edge constraint) {
pushVectorEdge(&cnf->constraints, constraint);
+ printf("****ADDING NEW Constraint*****\n");
+ printCNF(constraint);
+ printf("\n******************************\n");
}
Edge constraintNewVar(CNF *cnf) {
VectorBoolean *constraints=csolver->constraints;
uint size=getSizeVectorBoolean(constraints);
for(uint i=0;i<size;i++) {
+ model_print("Encoding All ...\n\n");
Boolean *constraint=getVectorBoolean(constraints, i);
Edge c= encodeConstraintSATEncoder(This, constraint);
- printCNF(c);
- printf("\n\n");
+ model_print("Returned Constraint in EncodingAll:\n");
addConstraintCNF(This->cnf, c);
}
}
void encodeElementSATEncoder(SATEncoder* encoder, Element *This){
switch( GETELEMENTTYPE(This) ){
case ELEMFUNCRETURN:
+ generateElementEncoding(encoder, This);
encodeElementFunctionSATEncoder(encoder, (ElementFunction*) This);
break;
case ELEMSET:
#include "tableentry.h"
#include "set.h"
#include "element.h"
-
+#include "common.h"
Edge encodeEnumTablePredicateSATEncoder(SATEncoder * This, BooleanPredicate * constraint){
VectorTableEntry* entries = &(((PredicateTable*)constraint->predicate)->table->entries);
FunctionEncodingType encType = constraint->encoding.type;
void encodeOperatorElementFunctionSATEncoder(SATEncoder* This, ElementFunction* func) {
+#ifdef TRACE_DEBUG
+ model_print("Operator Function ...\n");
+#endif
FunctionOperator * function = (FunctionOperator *) func->function;
uint numDomains=getSizeArrayElement(&func->inputs);
}
void encodeEnumTableElemFunctionSATEncoder(SATEncoder* This, ElementFunction* func){
+#ifdef TRACE_DEBUG
+ model_print("Enumeration Table functions ...\n");
+#endif
//FIXME: HANDLE UNDEFINED BEHAVIORS
ASSERT(GETFUNCTIONTYPE(func->function)==TABLEFUNC);
ArrayElement* elements= &func->inputs;
void createAllTotalOrderConstraintsSATEncoder(SATEncoder* This, Order* order){
+#ifdef TRACE_DEBUG
+ model_print("in total order ...\n");
+#endif
ASSERT(order->type == TOTAL);
VectorInt* mems = order->set->members;
HashTableOrderPair* table = order->orderPairTable;
/** Turn on debugging. */
#ifndef CONFIG_DEBUG
//#define CONFIG_DEBUG
+#define TRACE_DEBUG
#endif
#ifndef CONFIG_ASSERT