Merge ssh://ssh.dcc.fc.up.pt:31064//home/vsc/yap

This commit is contained in:
Vitor Santos Costa 2018-10-29 13:32:15 +00:00
commit 0d8e28af3e
18 changed files with 11586 additions and 1168 deletions

View File

@ -81,6 +81,7 @@ static bool setErr(const char *q, yap_error_descriptor_t *i, Term t) {
set_key_b(parserReadingCode, "parserReadingcode", q, i, t);
set_key_b(prologConsulting, "prologConsulting", q, i, t);
set_key_s(culprit, "culprit", q, i, t);
set_key_s(prologStack, "prologStack", q, i, t);
set_key_s(errorMsg, "errorMsg", q, i, t);
set_key_i(errorMsgLen, "errorMsgLen", q, i, t);
return false;
@ -129,7 +130,8 @@ static Term queryErr(const char *q, yap_error_descriptor_t *i) {
query_key_s(parserFile, "parserFile", q, i);
query_key_b(parserReadingCode, "parserReadingCode", q, i);
query_key_b(prologConsulting, "prologConsulting", q, i);
query_key_t(culprit, "culprit", q, i);
query_key_s(prologStack, "prologStack", q, i);
query_key_s(culprit, "culprit", q, i);
query_key_s(errorMsg, "errorMsg", q, i);
query_key_i(errorMsgLen, "errorMsgLen", q, i);
return TermNil;
@ -176,6 +178,7 @@ static void printErr(yap_error_descriptor_t *i) {
print_key_b("parserReadingCode", i->parserReadingCode);
print_key_b("prologConsulting", i->prologConsulting);
print_key_s("culprit", i->culprit);
print_key_s("prologStack", i->prologStack);
if (i->errorMsgLen) {
print_key_s("errorMsg", i->errorMsg);
print_key_i("errorMsgLen", i->errorMsgLen);
@ -234,6 +237,7 @@ static Term err2list(yap_error_descriptor_t *i) {
o = add_key_b("parserReadingCode", i->parserReadingCode, o);
o = add_key_b("prologConsulting", i->prologConsulting, o);
o = add_key_s("culprit", i->culprit, o);
o = add_key_s("prologStack", i->prologStack, o);
if (i->errorMsgLen) {
o = add_key_s("errorMsg", i->errorMsg, o);
o = add_key_i("errorMsgLen", i->errorMsgLen, o);
@ -858,7 +862,8 @@ yamop *Yap_Error__(bool throw, const char *file, const char *function,
#ifdef DEBUG
// DumpActiveGoals( USES_REGS1 );
#endif /* DEBUG */
if (LOCAL_ActiveError->errorNo!= SYNTAX_ERROR)
LOCAL_ActiveError->prologStack=Yap_dump_stack();
CalculateStackGap(PASS_REGS1);
#if DEBUG
// DumpActiveGoals( PASS_REGS1 );

199
C/stack.c
View File

@ -105,6 +105,8 @@ restart:
return NULL;
}
extern char * Yap_output_bug_location(yamop *yap_pc, int where_from, int psize);
static PredEntry *PredForChoicePt(yamop *p_code, op_numbers *opn) {
while (TRUE) {
op_numbers opnum;
@ -656,7 +658,7 @@ static Int code_in_pred(PredEntry *pp, Atom *pat, UInt *parity,
PELOCK(40, pp);
/* check if the codeptr comes from the indexing code */
if (pp->PredFlags & IndexedPredFlag && pp->OpcodeOfPred != INDEX_OPCODE) {
if (pp->PredFlags & IndexedPredFlag && pp->OpcodeOfPred != INDEX_OPCODE) {
if (pp->PredFlags & LogUpdatePredFlag) {
if (code_in_pred_lu_index(
ClauseCodeToLogUpdIndex(pp->cs.p_code.TrueCodeOfPred), codeptr,
@ -1702,8 +1704,6 @@ parent_pred(USES_REGS1) {
Yap_unify(ARG2, MkAtomTerm(at)) && Yap_unify(ARG3, MkIntTerm(arity));
}
void Yap_dump_stack(void);
void DumpActiveGoals(CACHE_TYPE1);
static int hidden(Atom);
@ -1767,173 +1767,191 @@ static bool handled_exception(USES_REGS1) {
return !found_handler;
}
void Yap_dump_stack(void) {
#define ADDBUF( CMD ) { \
while (true) { \
size_t sz = CMD; \
if (sz < lbufsz-256) { \
lbuf += sz; \
lbufsz -= sz; \
break; \
} \
char *nbuf = Realloc(buf, bufsize += 1024); \
lbuf = nbuf + (lbuf-buf); \
buf = nbuf; \
lbufsz += 1024; \
} \
}
const char *Yap_dump_stack(void) {
CACHE_REGS
choiceptr b_ptr = B;
CELL *env_ptr = ENV;
char tp[256];
char *tp;
yamop *ipc = CP;
int max_count = 200;
int lvl = push_text_stack();
char *buf = Malloc(4096), *lbuf = buf;
size_t bufsize = 4096, lbufsz = bufsize-256;
/* check if handled */
//if (handled_exception(PASS_REGS1))
// if (handled_exception(PASS_REGS1))
// return;
#if DEBUG
fprintf(stderr, "%% YAP regs: P=%p, CP=%p, ASP=%p, H=%p, TR=%p, HeapTop=%p\n",
P, CP, ASP, HR, TR, HeapTop);
#endif
ADDBUF(snprintf(lbuf, lbufsz ,
"%% YAP regs: P=%p, CP=%p, ASP=%p, H=%p, TR=%p, HeapTop=%p~n", P,
CP, ASP, HR, TR, HeapTop));
fprintf(stderr, "%% \n%% =====================================\n%%\n");
fprintf(stderr, "%% \n%% YAP Status:\n");
fprintf(stderr, "%% \n%% -------------------------------------\n%%\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% ~n%% =====================================~n%%~n"));
ADDBUF(snprintf(lbuf, lbufsz , "%% ~n%% YAP Status:~n"));
ADDBUF(snprintf(lbuf, lbufsz , "%% ~n%% -------------------------------------~n%%~n"));
yap_error_number errnbr = LOCAL_Error_TYPE;
yap_error_class_number classno = Yap_errorClass(errnbr);
fprintf(stderr, "%% Error STATUS: %s/%s\n\n", Yap_errorName(errnbr),
Yap_errorClassName(classno));
ADDBUF(snprintf(lbuf, lbufsz , "%% Error STATUS: %s/%s~n~n", Yap_errorName(errnbr),
Yap_errorClassName(classno)));
fprintf(stderr, "%% Execution mode\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Execution mode~n"));
if (LOCAL_PrologMode & BootMode)
fprintf(stderr, "%% Bootstrap\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Bootstrap~n"));
if (LOCAL_PrologMode & UserMode)
fprintf(stderr, "%% User Prolo\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% User Prolo~n"));
if (LOCAL_PrologMode & CritMode)
fprintf(stderr, "%% Exclusive Access Mode\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Exclusive Access Mode~n"));
if (LOCAL_PrologMode & AbortMode)
fprintf(stderr, "%% Abort\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Abort~n"));
if (LOCAL_PrologMode & InterruptMode)
fprintf(stderr, "%% Interrupt\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Interrupt~n"));
if (LOCAL_PrologMode & InErrorMode)
fprintf(stderr, "%% Error\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Error~n"));
if (LOCAL_PrologMode & ConsoleGetcMode)
fprintf(stderr, "%% Prompt Console\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Prompt Console~n"));
if (LOCAL_PrologMode & ExtendStackMode)
fprintf(stderr, "%% Stack expansion \n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Stack expansion ~n"));
if (LOCAL_PrologMode & GrowHeapMode)
fprintf(stderr, "%% Data Base Expansion\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Data Base Expansion~n"));
if (LOCAL_PrologMode & GrowStackMode)
fprintf(stderr, "%% User Prolog\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% User Prolog~n"));
if (LOCAL_PrologMode & GCMode)
fprintf(stderr, "%% Garbage Collection\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Garbage Collection~n"));
if (LOCAL_PrologMode & ErrorHandlingMode)
fprintf(stderr, "%% Error handler\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Error handler~n"));
if (LOCAL_PrologMode & CCallMode)
fprintf(stderr, "%% System Foreign Code\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% System Foreign Code~n"));
if (LOCAL_PrologMode & UnifyMode)
fprintf(stderr, "%% Off-line Foreign Code\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Off-line Foreign Code~n"));
if (LOCAL_PrologMode & UserCCallMode)
fprintf(stderr, "%% User Foreig C\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% User Foreig C~n"));
if (LOCAL_PrologMode & MallocMode)
fprintf(stderr, "%% Heap Allocaror\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Heap Allocaror~n"));
if (LOCAL_PrologMode & SystemMode)
fprintf(stderr, "%% Prolog Internals\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Prolog Internals~n"));
if (LOCAL_PrologMode & AsyncIntMode)
fprintf(stderr, "%% Async Interruot mode\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Async Interruot mode~n"));
if (LOCAL_PrologMode & InReadlineMode)
fprintf(stderr, "%% Readline Console\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% Readline Console~n"));
if (LOCAL_PrologMode & TopGoalMode)
fprintf(stderr, "%% Creating new query\n");
fprintf(stderr, "%% \n%% -------------------------------------\n%%\n");
fprintf(stderr, "%% \n%% YAP Program:\n");
fprintf(stderr, "%% \n%% -------------------------------------\n%%\n");
fprintf(stderr, "%% Program Position: %s\n\n", Yap_errorName(errno) );
fprintf(stderr, "%% PC: %s\n", (char *)HR);
ADDBUF(snprintf(lbuf, lbufsz , "%% Creating new query~n"));
#endif
ADDBUF(snprintf(lbuf, lbufsz , "%% ~n%% -------------------------------------~n%%~n"));
ADDBUF(snprintf(lbuf, lbufsz , "%% ~n%% YAP Program:~n"));
ADDBUF(snprintf(lbuf, lbufsz , "%% ~n%% -------------------------------------~n%%~n"));
ADDBUF(snprintf(lbuf, lbufsz , "%% Program Position: %s~n~n", Yap_errorName(errno)));
ADDBUF(snprintf(lbuf, lbufsz , "%% PC: %s~n", (char *)HR));
Yap_output_bug_location(CP, FIND_PRED_FROM_ANYWHERE, 256);
fprintf(stderr, "%% Continuation: %s\n", (char *)HR);
ADDBUF(snprintf(lbuf, lbufsz , "%% Continuation: %s~n", (char *)HR));
Yap_output_bug_location(B->cp_ap, FIND_PRED_FROM_ANYWHERE, 256);
fprintf(stderr, "%% Alternative: %s\n", (char *)HR);
ADDBUF(snprintf(lbuf, lbufsz , "%% Alternative: %s~n", (char *)HR));
fprintf(stderr, "%% \n%% -------------------------------------\n%%\n");
fprintf(stderr, "%% \n%% YAP Stack Usage:\n");
fprintf(stderr, "%% \n%% -------------------------------------\n%%\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% ~n%% -------------------------------------~n%%~n"));
ADDBUF(snprintf(lbuf, lbufsz , "%% ~n%% YAP Stack Usage:~n"));
ADDBUF(snprintf(lbuf, lbufsz , "%% ~n%% -------------------------------------~n%%~n"));
if (HR > ASP || HR > LCL0) {
fprintf(stderr, "%% YAP ERROR: Global Collided against Local (%p--%p)\n",
HR, ASP);
ADDBUF(snprintf(lbuf, lbufsz , "%% YAP ERROR: Global Collided against Local (%p--%p)~n",
HR, ASP));
} else if (HeapTop > (ADDR)LOCAL_GlobalBase) {
fprintf(stderr,
"%% YAP ERROR: Code Space Collided against Global (%p--%p)\n",
HeapTop, LOCAL_GlobalBase);
ADDBUF(snprintf(lbuf, lbufsz ,
"%% YAP ERROR: Code Space Collided against Global (%p--%p)~n",
HeapTop, LOCAL_GlobalBase));
} else {
#if !USE_SYSTEM_MALLOC
fprintf(stderr, "%%ldKB of Code Space (%p--%p)\n",
ADDBUF(snprintf(lbuf, lbufsz , "%%ldKB of Code Space (%p--%p)~n",
(long int)((CELL)HeapTop - (CELL)Yap_HeapBase) / 1024, Yap_HeapBase,
HeapTop);
HeapTop));
#if USE_DL_MALLOC
if (Yap_NOfMemoryHoles) {
UInt i;
for (i = 0; i < Yap_NOfMemoryHoles; i++)
fprintf(stderr, " Current hole: %p--%p\n", Yap_MemoryHoles[i].start,
Yap_MemoryHoles[i].end);
ADDBUF(snprintf(lbuf, lbufsz , " Current hole: %p--%p~n", Yap_MemoryHoles[i].start,
Yap_MemoryHoles[i].end));
}
#endif
#endif
fprintf(stderr, "%% %luKB of Global Stack (%p--%p)\n",
(unsigned long int)(sizeof(CELL) * (HR - H0)) / 1024, H0, HR);
fprintf(stderr, "%% %luKB of Local Stack (%p--%p)\n",
(unsigned long int)(sizeof(CELL) * (LCL0 - ASP)) / 1024, ASP, LCL0);
fprintf(stderr, "%% %luKB of Trail (%p--%p)\n",
ADDBUF(snprintf(lbuf, lbufsz , "%% %luKB of Global Stack (%p--%p)~n",
(unsigned long int)(sizeof(CELL) * (HR - H0)) / 1024, H0, HR));
ADDBUF(snprintf(lbuf, lbufsz , "%% %luKB of Local Stack (%p--%p)~n",
(unsigned long int)(sizeof(CELL) * (LCL0 - ASP)) / 1024, ASP, LCL0));
ADDBUF(snprintf(lbuf, lbufsz , "%% %luKB of Trail (%p--%p)~n",
(unsigned long int)((ADDR)TR - LOCAL_TrailBase) / 1024,
LOCAL_TrailBase, TR);
fprintf(stderr, "%% Performed %ld garbage collections\n",
(unsigned long int)LOCAL_GcCalls);
LOCAL_TrailBase, TR));
ADDBUF(snprintf(lbuf, lbufsz , "%% Performed %ld garbage collections~n",
(unsigned long int)LOCAL_GcCalls));
#if LOW_LEVEL_TRACER
{
extern long long vsc_count;
if (vsc_count) {
#if _WIN32
fprintf(stderr, "Trace Counter at %I64d\n", vsc_count);
ADDBUF(snprintf(lbuf, lbufsz , "Trace Counter at %I64d~n", vsc_count));
#else
fprintf(stderr, "Trace Counter at %lld\n", vsc_count);
ADDBUF(snprintf(lbuf, lbufsz , "Trace Counter at %lld~n", vsc_count));
#endif
}
}
#endif
fprintf(stderr, "%% \n%% -------------------------------------\n%%\n");
fprintf(stderr, "%% \n%% YAP Stack:\n");
fprintf(stderr, "%% \n%% -------------------------------------\n%%\n");
fprintf(stderr, "%% All Active Calls and\n");
fprintf(stderr, "%% Goals With Alternatives Open (Global In "
"Use--Local In Use)\n%%\n");
ADDBUF(snprintf(lbuf, lbufsz , "%% ~n%% -------------------------------------~n%%~n"));
ADDBUF(snprintf(lbuf, lbufsz , "%% ~n%% YAP Stack:~n"));
ADDBUF(snprintf(lbuf, lbufsz , "%% ~n%% -------------------------------------~n%%~n"));
ADDBUF(snprintf(lbuf, lbufsz , "%% All Active Calls and~n"));
ADDBUF(snprintf(lbuf, lbufsz , "%% Goals With Alternatives Open (Global In "
"Use--Local In Use)~n%%~n"));
while (b_ptr != NULL) {
while (env_ptr && env_ptr <= (CELL *)b_ptr) {
Yap_output_bug_location(ipc, FIND_PRED_FROM_ENV, 256);
tp = Yap_output_bug_location(ipc, FIND_PRED_FROM_ENV, 256);
if (env_ptr == (CELL *)b_ptr && (choiceptr)env_ptr[E_CB] > b_ptr) {
b_ptr = b_ptr->cp_b;
fprintf(stderr, "%% %s\n", tp);
ADDBUF(snprintf(lbuf, lbufsz , "%% %s~n", tp));
} else {
fprintf(stderr, "%% %s\n", tp);
ADDBUF(snprintf(lbuf, lbufsz , "%% %s~n", tp));
}
if (!max_count--) {
fprintf(stderr, "%% .....\n");
return;
ADDBUF(snprintf(lbuf, lbufsz , "%% .....~n"));
return pop_output_text_stack(lvl, lbuf);
}
ipc = (yamop *)(env_ptr[E_CP]);
env_ptr = (CELL *)(env_ptr[E_E]);
}
if (b_ptr) {
if (!max_count--) {
fprintf(stderr, "// .....\n");
return;
ADDBUF(snprintf(lbuf, lbufsz , "// .....~n"));
return pop_output_text_stack(lvl, lbuf);
}
if (b_ptr->cp_ap && /* tabling */
b_ptr->cp_ap->opc != Yap_opcode(_or_else) &&
b_ptr->cp_ap->opc != Yap_opcode(_or_last) &&
b_ptr->cp_ap->opc != Yap_opcode(_Nstop)) {
/* we can safely ignore ; because there is always an upper env */
Yap_output_bug_location(b_ptr->cp_ap, FIND_PRED_FROM_CP, 256);
fprintf(stderr, "%% %s (%luKB--%luKB)\n", tp,
tp = Yap_output_bug_location(b_ptr->cp_ap, FIND_PRED_FROM_CP, 256);
ADDBUF(snprintf(lbuf, lbufsz , "%% %s (%luKB--%luKB)~n", tp,
(unsigned long int)((b_ptr->cp_h - H0) * sizeof(CELL) / 1024),
(unsigned long int)((ADDR)LCL0 - (ADDR)b_ptr) / 1024);
(unsigned long int)((ADDR)LCL0 - (ADDR)b_ptr) / 1024));
}
b_ptr = b_ptr->cp_b;
}
}
}
return pop_output_text_stack(lvl, lbuf);
}
void DumpActiveGoals(USES_REGS1) {
/* try to dump active goals */
CELL *ep = YENV; /* and current environment */
@ -2047,7 +2065,7 @@ void DumpActiveGoals(USES_REGS1) {
if (i > 0)
fputc(',', stderr);
fputc('_', stderr);
}
}
fputs(") :- ... ( _ ; _ ", stderr);
} else {
Term *args = &(b_ptr->cp_a1);
@ -2068,33 +2086,34 @@ void DumpActiveGoals(USES_REGS1) {
}
}
/**
* Used for debugging.
*
*
*/
void Yap_output_bug_location(yamop *yap_pc, int where_from, int psize) {
char * Yap_output_bug_location(yamop *yap_pc, int where_from, int psize) {
Atom pred_name;
UInt pred_arity;
Term pred_module;
Int cl;
char *o = Malloc(256);
if ((cl = Yap_PredForCode(yap_pc, where_from, &pred_name, &pred_arity,
&pred_module)) == 0) {
/* system predicate */
fprintf(stderr, "%% %s", "meta-call");
snprintf(o, 255, "%% %s", "meta-call");
} else if (pred_module == 0) {
fprintf(stderr, "in prolog:%s/%lu", RepAtom(pred_name)->StrOfAE,
snprintf(o, 255, "in prolog:%s/%lu", RepAtom(pred_name)->StrOfAE,
(unsigned long int)pred_arity);
} else if (cl < 0) {
fprintf(stderr, "%% %s:%s/%lu", RepAtom(AtomOfTerm(pred_module))->StrOfAE,
snprintf(o, 255, "%% %s:%s/%lu", RepAtom(AtomOfTerm(pred_module))->StrOfAE,
RepAtom(pred_name)->StrOfAE, (unsigned long int)pred_arity);
} else {
fprintf(stderr, "%% %s:%s/%lu at clause %lu",
snprintf(o, 255, "%% %s:%s/%lu at clause %lu",
RepAtom(AtomOfTerm(pred_module))->StrOfAE,
RepAtom(pred_name)->StrOfAE, (unsigned long int)pred_arity,
(unsigned long int)cl);
}
return o;
}
static yap_error_descriptor_t *add_bug_location(yap_error_descriptor_t *p,

View File

@ -100,10 +100,11 @@ static bool callPortray(Term t, int sno USES_REGS) {
return false;
}
#define PROTECT(t,F) { \
yhandle_t yt = Yap_InitHandle(t); \
F; \
t = Yap_PopHandle(yt); \
#define PROTECT(t, F) \
{ \
yhandle_t yt = Yap_InitHandle(t); \
F; \
t = Yap_PopHandle(yt); \
}
static void wrputn(Int, struct write_globs *);
static void wrputf(Float, struct write_globs *);
@ -700,9 +701,9 @@ static void write_var(CELL *t, struct write_globs *wglb,
wrputs("$AT(", wglb->stream);
write_var(t, wglb, rwt);
wrputc(',', wglb->stream);
PROTECT(*t,writeTerm(*l, 999, 1, FALSE, wglb, &nrwt));
attv = RepAttVar(t);
wrputc(',', wglb->stream);
PROTECT(*t, writeTerm(*l, 999, 1, FALSE, wglb, &nrwt));
attv = RepAttVar(t);
wrputc(',', wglb->stream);
l++;
writeTerm(*l, 999, 1, FALSE, wglb, &nrwt);
wrclose_bracket(wglb, TRUE);
@ -717,7 +718,6 @@ static void write_var(CELL *t, struct write_globs *wglb,
}
}
static void write_list(Term t, int direction, int depth,
struct write_globs *wglb, struct rewind_term *rwt) {
Term ti;
@ -729,8 +729,7 @@ static void write_list(Term t, int direction, int depth,
int ndirection;
int do_jump;
PROTECT(t,writeTerm(HeadOfTerm(t), 999, depth + 1, FALSE,
wglb, &nrwt));
PROTECT(t, writeTerm(HeadOfTerm(t), 999, depth + 1, FALSE, wglb, &nrwt));
ti = TailOfTerm(t);
if (IsVarTerm(ti))
break;
@ -766,17 +765,16 @@ static void write_list(Term t, int direction, int depth,
}
if (IsPairTerm(ti)) {
/* we found an infinite loop */
/* keep going on the list */
wrputc(',', wglb->stream);
write_list(ti, direction, depth, wglb, &nrwt);
/* keep going on the list */
wrputc(',', wglb->stream);
write_list(ti, direction, depth, wglb, &nrwt);
} else if (ti != MkAtomTerm(AtomNil)) {
if (lastw == symbol || lastw == separator) {
wrputc(' ', wglb->stream);
}
wrputc('|', wglb->stream);
lastw = separator;
writeTerm(ti, 999, depth, FALSE,
wglb, &nrwt);
writeTerm(ti, 999, depth, FALSE, wglb, &nrwt);
}
}
@ -807,11 +805,9 @@ static void writeTerm(Term t, int p, int depth, int rinfixarg,
wrputs("'.'(", wglb->stream);
lastw = separator;
PROTECT( t, writeTerm(HeadOfTerm(t), 999, depth + 1, FALSE,
wglb, &nrwt));
PROTECT(t, writeTerm(HeadOfTerm(t), 999, depth + 1, FALSE, wglb, &nrwt));
wrputs(",", wglb->stream);
writeTerm(TailOfTerm(t), 999, depth + 1,
FALSE, wglb, &nrwt);
writeTerm(TailOfTerm(t), 999, depth + 1, FALSE, wglb, &nrwt);
wrclose_bracket(wglb, TRUE);
return;
}
@ -877,8 +873,7 @@ static void writeTerm(Term t, int p, int depth, int rinfixarg,
*p++;
lastw = separator;
/* cannot use the term directly with the SBA */
PROTECT( t, writeTerm(*p, 999, depth + 1, FALSE, wglb,
&nrwt) );
PROTECT(t, writeTerm(*p, 999, depth + 1, FALSE, wglb, &nrwt));
if (*p)
wrputc(',', wglb->stream);
argno++;
@ -906,8 +901,7 @@ static void writeTerm(Term t, int p, int depth, int rinfixarg,
} else if (atom == AtomMinus) {
last_minus = TRUE;
}
writeTerm(tright, rp, depth + 1, TRUE,
wglb, &nrwt);
writeTerm(tright, rp, depth + 1, TRUE, wglb, &nrwt);
if (bracket_right) {
wrclose_bracket(wglb, TRUE);
}
@ -940,8 +934,7 @@ static void writeTerm(Term t, int p, int depth, int rinfixarg,
if (bracket_left) {
wropen_bracket(wglb, TRUE);
}
writeTerm(ArgOfTerm(offset,t), lp, depth + 1,
rinfixarg, wglb, &nrwt);
writeTerm(ArgOfTerm(offset, t), lp, depth + 1, rinfixarg, wglb, &nrwt);
if (bracket_left) {
wrclose_bracket(wglb, TRUE);
}
@ -986,8 +979,8 @@ static void writeTerm(Term t, int p, int depth, int rinfixarg,
if (bracket_left) {
wropen_bracket(wglb, TRUE);
}
PROTECT(t,writeTerm(ArgOfTerm(1,t), lp, depth + 1,
rinfixarg, wglb, &nrwt));
PROTECT(
t, writeTerm(ArgOfTerm(1, t), lp, depth + 1, rinfixarg, wglb, &nrwt));
if (bracket_left) {
wrclose_bracket(wglb, TRUE);
}
@ -1006,8 +999,7 @@ static void writeTerm(Term t, int p, int depth, int rinfixarg,
if (bracket_right) {
wropen_bracket(wglb, TRUE);
}
writeTerm(ArgOfTerm(2,t), rp, depth + 1, TRUE,
wglb, &nrwt);
writeTerm(ArgOfTerm(2, t), rp, depth + 1, TRUE, wglb, &nrwt);
if (bracket_right) {
wrclose_bracket(wglb, TRUE);
}
@ -1047,15 +1039,14 @@ static void writeTerm(Term t, int p, int depth, int rinfixarg,
} else {
wrputs("'$VAR'(", wglb->stream);
lastw = separator;
writeTerm(ArgOfTerm(1, t), 999, depth + 1,
FALSE, wglb, &nrwt);
writeTerm(ArgOfTerm(1, t), 999, depth + 1, FALSE, wglb, &nrwt);
wrclose_bracket(wglb, TRUE);
}
} else if (!wglb->Ignore_ops && functor == FunctorBraces) {
wrputc('{', wglb->stream);
lastw = separator;
writeTerm(ArgOfTerm(1, t), GLOBAL_MaxPriority,
depth + 1, FALSE, wglb, &nrwt);
writeTerm(ArgOfTerm(1, t), GLOBAL_MaxPriority, depth + 1, FALSE, wglb,
&nrwt);
wrputc('}', wglb->stream);
lastw = separator;
} else if (atom == AtomArray) {
@ -1066,17 +1057,15 @@ static void writeTerm(Term t, int p, int depth, int rinfixarg,
wrputs("...", wglb->stream);
break;
}
writeTerm(ArgOfTerm(op, t), 999, depth + 1,
FALSE, wglb, &nrwt);
writeTerm(ArgOfTerm(op, t), 999, depth + 1, FALSE, wglb, &nrwt);
if (op != Arity) {
PROTECT(t, writeTerm(ArgOfTerm(op, t), 999, depth + 1,
FALSE, wglb, &nrwt));
PROTECT(t, writeTerm(ArgOfTerm(op, t), 999, depth + 1, FALSE, wglb,
&nrwt));
wrputc(',', wglb->stream);
lastw = separator;
}
}
writeTerm(ArgOfTerm(op, t), 999, depth + 1,
FALSE, wglb, &nrwt);
writeTerm(ArgOfTerm(op, t), 999, depth + 1, FALSE, wglb, &nrwt);
wrputc('}', wglb->stream);
lastw = separator;
} else {
@ -1090,13 +1079,12 @@ static void writeTerm(Term t, int p, int depth, int rinfixarg,
wrputc('.', wglb->stream);
break;
}
PROTECT(t,writeTerm(ArgOfTerm(op, t), 999, depth + 1,
FALSE, wglb, &nrwt));
wrputc(',', wglb->stream);
lastw = separator;
PROTECT(
t, writeTerm(ArgOfTerm(op, t), 999, depth + 1, FALSE, wglb, &nrwt));
wrputc(',', wglb->stream);
lastw = separator;
}
writeTerm(ArgOfTerm(op, t), 999, depth + 1,
FALSE, wglb, &nrwt);
writeTerm(ArgOfTerm(op, t), 999, depth + 1, FALSE, wglb, &nrwt);
wrclose_bracket(wglb, TRUE);
}
}
@ -1138,14 +1126,14 @@ void Yap_plwrite(Term t, StreamDesc *mywrite, int max_depth, int flags,
wglb.Write_strings = flags & BackQuote_String_f;
if (!(flags & Ignore_cyclics_f) && false) {
Term ts[2];
ts[0] = Yap_BreakRational(t, 0, ts+1, TermNil PASS_REGS);
//fprintf(stderr, "%lx %lx %lx\n", t, ts[0], ts[1]);
//Yap_DebugPlWriteln(ts[0]);
//ap_DebugPlWriteln(ts[1[);
ts[0] = Yap_BreakRational(t, 0, ts + 1, TermNil PASS_REGS);
// fprintf(stderr, "%lx %lx %lx\n", t, ts[0], ts[1]);
// Yap_DebugPlWriteln(ts[0]);
// ap_DebugPlWriteln(ts[1[);
if (ts[1] != TermNil) {
t = Yap_MkApplTerm( FunctorAtSymbol, 2, ts);
t = Yap_MkApplTerm(FunctorAtSymbol, 2, ts);
}
}
}
/* protect slots for portray */
writeTerm(t, priority, 1, FALSE, &wglb, &rwt);
if (flags & New_Line_f) {
@ -1164,4 +1152,3 @@ void Yap_plwrite(Term t, StreamDesc *mywrite, int max_depth, int flags,
Yap_CloseSlots(sls);
pop_text_stack(lvl);
}

View File

@ -88,34 +88,71 @@ option(WITH_READLINE "use readline or libedit" ON)
option(WITH_JIT "just in Time Clause Compilation" OFF)
if (APPLE)
set(MACOSX_RPATH ON)
option(WITH_BREW "brew" ON)
if (not WITH_BREW)
option(WITH_MACPORTS "mac-ports" ON)
if (WITH_BREW)
EXECUTE_PROCESS(COMMAND brew --prefix RESULT_VARIABLE DETECT_BREW OUTPUT_VARIABLE BREW_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
IF (${DETECT_BREW} EQUAL 0)
# "/opt/local" is where MacPorts lives, add `/lib` suffix and link
LINK_DIRECTORIES( ${BREW_PREFIX}/lib)
list(INSERT CMAKE_PREFIX_PATH pos
${BREW_PREFIX}/opt/gmp
${BREW_PREFIX}/opt/libxml2
${BREW_PREFIX}/opt/openmpi
${BREW_PREFIX}/opt/openssl
${BREW_PREFIX}/opt/postgresql
${BREW_PREFIX}/opt/python3
${BREW_PREFIX}/opt/readline
${BREW_PREFIX}/opt/swig
)
else()
option(WITH_MACPORTS "mac-ports" ON)
if (WITH_MACPORTS)
# Add MacPorts
# Detect if the "port" command is valid on this system; if so, return full path
EXECUTE_PROCESS(COMMAND which port RESULT_VARIABLE DETECT_MACPORTS OUTPUT_VARIABLE MACPORTS_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
IF (${DETECT_MACPORTS} EQUAL 0)
# "/opt/local/bin/port" doesn't have libs, so we get the parent directory
GET_FILENAME_COMPONENT(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
# "/opt/local/bin" doesn't have libs, so we get the parent directory
GET_FILENAME_COMPONENT(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
# "/opt/local" is where MacPorts lives, add `/lib` suffix and link
LINK_DIRECTORIES(${LINK DIRECTORIES} ${MACPORTS_PREFIX}/lib)
endif()
endif()
endif()
endif()
endif()
option (WITH_EXTENSIONS "packages and libraries that add value to YAP" ON)
option (WITH_PACKAGES "packages and liaries that add value to YAP" ON)
OPTION(WITH_MYDDAS " Enable MYDDAS driver" ${WITH_EXTENSIONS})
OPTION(WITH_MYDDAS " Enable MYDDAS driver" ${WITH_PACKAGES})
OPTION(WITH_SQLITE3 " Enable MYDDAS SQLITE3 driver" ${WITH_MYDDAS})
OPTION(WITH_MYSQL " Enable MYDDAS MYSQL driver" ${WITH_MYDDAS})
OPTION(WITH_ODBC " Enable MYDDAS ODBC driver" ${WITH_MYDDAS})
OPTION(WITH_POSTGRES " Enable MYDDAS POSTGRES driver" ${WITH_MYDDAS})
OPTION(WITH_SQLITE3 " Enable MYDDAS SQLITE3 driver" ${WITH_MYDDAS})
OPTION(WITH_SWIG " Enable SWIG interfaces to foreign languages" ${WITH_EXTENSIONS})
OPTION(WITH_RAPTOR " Enable the RAPTOR RDF library" ${WITH_EXTENSIONS})
OPTION(WITH_XML2 " Enable the RAPTOR XML2 library" ${WITH_EXTENSIONS})
OPTION(WITH_XML " Enable the Prolog XML library" ${WITH_EXTENSIONS})
OPTION(WITH_CLPBN" Enable the CLPBN and PFL probabilistic languages" ${WITH_EXTENSIONS})
OPTION(WITH_SWIG " Enable SWIG interfaces to foreign languages" ${WITH_PACKAGES})
OPTION(WITH_RAPTOR " Enable the RAPTOR RDF library" ${WITH_PACKAGES})
OPTION(WITH_XML2 " Enable the RAPTOR XML2 library" ${WITH_PACKAGES})
OPTION(WITH_XML " Enable the Prolog XML library" ${WITH_PACKAGES})
OPTION(WITH_CLPBN" Enable the CLPBN and PFL probabilistic languages" ${WITH_PACKAGES})
OPTION(WITH_HORUS " Enable the HORUS inference libraray for CLPBN and PFL" ${WITH_CLPBN})
option(WITH_PROBLOG "include Problog-I." ${WITH_EXTENSIONS})
OPTION(WITH_CPLINT " Enable the cplint probabilistic language" ${WITH_EXTENSIONS})
option(WITH_GECODE "interface gecode constraint solver" ${WITH_EXTENSIONS})
option(WITH_LBFGS "interface with lbfgs" ${WITH_EXTENSIONS})
option(WITH_PRISM "use PRISM system in YAP" ${WITH_EXTENSIONS})
option(WITH_PYTHON "Allow Python->YAP and YAP->Python" ${WITH_EXTENSIONS})
option(WITH_R "Use R Interface" ${WITH_EXTENSIONS})
option(WITH_JAVA "Try to use Java (currently Java 6,7,8)" ${WITH_EXTENSIONS})
option(WITH_PROBLOG "include Problog-I." ${WITH_PACKAGES})
OPTION(WITH_CPLINT " Enable the cplint probabilistic language" ${WITH_PACKAGES})
option(WITH_GECODE "interface gecode constraint solver" ${WITH_PACKAGES})
option(WITH_LBFGS "interface with lbfgs" ${WITH_PACKAGES})
option(WITH_PRISM "use PRISM system in YAP" ${WITH_PACKAGES})
option(WITH_PYTHON "Allow Python->YAP and YAP->Python" ${WITH_PACKAGES})
option(WITH_R "Use R Interface" ${WITH_PACKAGES})
option(WITH_JAVA "Try to use Java (currently Java 6,7,8)" ${WITH_PACKAGES})
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
@ -273,58 +310,6 @@ endif()
ADD_CUSTOM_TARGET(run_install COMMAND ${CMAKE_MAKE_PROGRAM} install)
if (APPLE)
set(MACOSX_RPATH ON)
if (NOT $ENV{CONDA_BUILD}x STREQUAL "1x")
set(PATH $ENV{PATH})
if (WITH_MACPORTS)
# Add MacPorts
# Detect if the "port" command is valid on this system; if so, return full path
EXECUTE_PROCESS(COMMAND which port RESULT_VARIABLE DETECT_MACPORTS OUTPUT_VARIABLE MACPORTS_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
IF (${DETECT_MACPORTS} EQUAL 0)
# "/opt/local/bin/port" doesn't have libs, so we get the parent directory
GET_FILENAME_COMPONENT(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
# "/opt/local/bin" doesn't have libs, so we get the parent directory
GET_FILENAME_COMPONENT(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
# "/opt/local" is where MacPorts lives, add `/lib` suffix and link
LINK_DIRECTORIES(${LINK DIRECTORIES} ${MACPORTS_PREFIX}/lib)
MESSAGE("WINNING!: ${MACPORTS_PREFIX}/lib")
ENDIF()
ENDIF()
if (WITH_BREW)
EXECUTE_PROCESS(COMMAND brew --prefix RESULT_VARIABLE DETECT_BREW OUTPUT_VARIABLE BREW_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
IF (${DETECT_BREW} EQUAL 0)
# "/opt/local" is where MacPorts lives, add `/lib` suffix and link
LINK_DIRECTORIES( ${BREW_PREFIX}/lib)
MESSAGE("BREW!: ${BREW_PREFIX}/lib")
ENDIF()
list(INSERT CMAKE_PREFIX_PATH pos
${BREW_PREFIX}/opt/gmp
${BREW_PREFIX}/opt/libxml2
${BREW_PREFIX}/opt/openmpi
${BREW_PREFIX}/opt/openssl
${BREW_PREFIX}/opt/postgresql
${BREW_PREFIX}/opt/python3
${BREW_PREFIX}/opt/readline
${BREW_PREFIX}/opt/swig
)
endif ()
endif()
endif ()
set(prefix ${CMAKE_INSTALL_PREFIX}) #BINDIR})
@ -837,9 +822,9 @@ if (WITH_JAVA)
set (STD_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK})
set (CMAKE_FIND_FRAMEWORK LAST) # CMake will find the Java returned by /usr/libexec/java_home.
macro_optional_find_package(JNI ON)
set (CMAKE_FIND_FRAMEWORK ${STD_CMAKE_FIND_FRAMEWORK})

View File

@ -391,8 +391,7 @@ extern void Yap_InitSortPreds(void);
/* stack.c */
extern void Yap_InitStInfo(void);
extern void Yap_dump_stack(void);
extern void Yap_output_bug_location(yamop *yap_pc, int where_from, int psize);
extern char *Yap_output_bug_location(yamop *yap_pc, int where_from, int psize);
#if !defined(YAPOR) && !defined(THREADS)
extern bool Yap_search_for_static_predicate_in_use(struct pred_entry *, bool);

View File

@ -243,6 +243,8 @@ INLINE_ONLY Term Yap_ensure_atom__(const char *fu, const char *fi, int line,
/// whether we are consulting
bool prologConsulting;
const char *culprit;
/// Prolog stack at the time
const char *prologStack;
YAP_Term errorRawTerm, rawExtraErrorTerm;
char *errorMsg;
size_t errorMsgLen;
@ -271,6 +273,8 @@ INLINE_ONLY Term Yap_ensure_atom__(const char *fu, const char *fi, int line,
yap_error_descriptor_t * t, void *cp0, void *b_ptr0, void *env0,
YAP_Int ignore_first);
extern const char *Yap_dump_stack(void);
extern yap_error_descriptor_t *Yap_prolog_add_culprit(yap_error_descriptor_t *
t);
extern yap_error_class_number Yap_errorClass(yap_error_number e);

View File

@ -100,10 +100,10 @@ typedef YAP_UInt YAP_Term;
#define TRUE true
#endif
#ifndef FALSE
#define FALSE false
#endif
typedef bool YAP_Bool;
#define FALSE false
typedef YAP_Int YAP_handle_t;

View File

@ -343,6 +343,9 @@ static Term syntax_error(TokEntry *errtok, int sno, Term cmod, Int newpos, bool
Yap_local.ActiveError->parserFile =
RepAtom(AtomOfTerm((GLOBAL_Stream+sno)->user_name))->StrOfAE;
Yap_local.ActiveError->parserReadingCode = code;
int lvl = push_text_stack();
if (GLOBAL_Stream[sno].status & Seekable_Stream_f) {
char *o, *o2;
#if HAVE_FTELLO
fseeko(GLOBAL_Stream[sno].file, startpos, SEEK_SET);
#else
@ -358,6 +361,7 @@ static Term syntax_error(TokEntry *errtok, int sno, Term cmod, Int newpos, bool
}
err_line = tok->TokLine;
errpos = tok->TokPos;
if (errpos <= startpos) {
o = malloc(1);
o[0] = '\0';

View File

@ -333,7 +333,7 @@ so that it is not recomputed
BChild1 = pt * p;
mVarIndex = bVar2mVar_ex[ex][index];
v = vars_ex[ex][mVarIndex];
index - v.firstBoolVar;
index = v.firstBoolVar;
res = BChild0 + BChild1;
add_node(table, nodekey, res);
return res;

View File

@ -0,0 +1 @@
6.1.0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,28 @@
// -*- c++ -*-
//=============================================================================
// Copyright (C) 2011 by Denys Duchier
//
// This program is free software: you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published by the
// Free Software Foundation, either version 3 of the License, or (at your
// option) any later version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
// more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//=============================================================================
static RestartMode gecode_RestartMode_from_term(YAP_Term);
static FloatRelType gecode_FloatRelType_from_term(YAP_Term);
static ReifyMode gecode_ReifyMode_from_term(YAP_Term);
static IntRelType gecode_IntRelType_from_term(YAP_Term);
static BoolOpType gecode_BoolOpType_from_term(YAP_Term);
static IntPropLevel gecode_IntPropLevel_from_term(YAP_Term);
static TaskType gecode_TaskType_from_term(YAP_Term);
static TraceEvent gecode_TraceEvent_from_term(YAP_Term);
static SetRelType gecode_SetRelType_from_term(YAP_Term);
static SetOpType gecode_SetOpType_from_term(YAP_Term);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,679 @@
// -*- c++ -*-
//=============================================================================
// Copyright (C) 2011 by Denys Duchier
//
// This program is free software: you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published by the
// Free Software Foundation, either version 3 of the License, or (at your
// option) any later version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
// more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//=============================================================================
{ YAP_Atom X= YAP_LookupAtom("RM_NONE");
gecode_RM_NONE = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("RM_CONSTANT");
gecode_RM_CONSTANT = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("RM_LINEAR");
gecode_RM_LINEAR = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("RM_LUBY");
gecode_RM_LUBY = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("RM_GEOMETRIC");
gecode_RM_GEOMETRIC = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("FRT_EQ");
gecode_FRT_EQ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("FRT_NQ");
gecode_FRT_NQ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("FRT_LQ");
gecode_FRT_LQ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("FRT_LE");
gecode_FRT_LE = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("FRT_GQ");
gecode_FRT_GQ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("FRT_GR");
gecode_FRT_GR = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("RM_EQV");
gecode_RM_EQV = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("RM_IMP");
gecode_RM_IMP = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("RM_PMI");
gecode_RM_PMI = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IRT_EQ");
gecode_IRT_EQ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IRT_NQ");
gecode_IRT_NQ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IRT_LQ");
gecode_IRT_LQ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IRT_LE");
gecode_IRT_LE = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IRT_GQ");
gecode_IRT_GQ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IRT_GR");
gecode_IRT_GR = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("BOT_AND");
gecode_BOT_AND = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("BOT_OR");
gecode_BOT_OR = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("BOT_IMP");
gecode_BOT_IMP = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("BOT_EQV");
gecode_BOT_EQV = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("BOT_XOR");
gecode_BOT_XOR = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IPL_DEF");
gecode_IPL_DEF = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IPL_VAL");
gecode_IPL_VAL = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IPL_BND");
gecode_IPL_BND = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IPL_DOM");
gecode_IPL_DOM = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IPL_BASIC");
gecode_IPL_BASIC = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IPL_ADVANCED");
gecode_IPL_ADVANCED = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("IPL_BASIC_ADVANCED");
gecode_IPL_BASIC_ADVANCED = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("TT_FIXP");
gecode_TT_FIXP = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("TT_FIXS");
gecode_TT_FIXS = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("TT_FIXE");
gecode_TT_FIXE = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("TE_INIT");
gecode_TE_INIT = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("TE_PRUNE");
gecode_TE_PRUNE = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("TE_FIX");
gecode_TE_FIX = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("TE_FAIL");
gecode_TE_FAIL = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("TE_DONE");
gecode_TE_DONE = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("TE_PROPAGATE");
gecode_TE_PROPAGATE = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("TE_COMMIT");
gecode_TE_COMMIT = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SRT_EQ");
gecode_SRT_EQ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SRT_NQ");
gecode_SRT_NQ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SRT_SUB");
gecode_SRT_SUB = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SRT_SUP");
gecode_SRT_SUP = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SRT_DISJ");
gecode_SRT_DISJ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SRT_CMPL");
gecode_SRT_CMPL = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SRT_LQ");
gecode_SRT_LQ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SRT_LE");
gecode_SRT_LE = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SRT_GQ");
gecode_SRT_GQ = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SRT_GR");
gecode_SRT_GR = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SOT_UNION");
gecode_SOT_UNION = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SOT_DUNION");
gecode_SOT_DUNION = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SOT_INTER");
gecode_SOT_INTER = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
{ YAP_Atom X= YAP_LookupAtom("SOT_MINUS");
gecode_SOT_MINUS = YAP_MkAtomTerm(X);
YAP_AtomGetHold(X); }
YAP_UserCPredicate("gecode_constraint_branch_1", gecode_constraint_branch_1, 2);
YAP_UserCPredicate("gecode_constraint_convex_2", gecode_constraint_convex_2, 2);
YAP_UserCPredicate("gecode_constraint_convex_3", gecode_constraint_convex_3, 3);
YAP_UserCPredicate("gecode_constraint_abs_4", gecode_constraint_abs_4, 3);
YAP_UserCPredicate("gecode_constraint_abs_5", gecode_constraint_abs_5, 3);
YAP_UserCPredicate("gecode_constraint_abs_6", gecode_constraint_abs_6, 4);
YAP_UserCPredicate("gecode_constraint_argmax_7", gecode_constraint_argmax_7, 3);
YAP_UserCPredicate("gecode_constraint_argmax_8", gecode_constraint_argmax_8, 4);
YAP_UserCPredicate("gecode_constraint_argmax_10", gecode_constraint_argmax_10, 4);
YAP_UserCPredicate("gecode_constraint_argmax_9", gecode_constraint_argmax_9, 5);
YAP_UserCPredicate("gecode_constraint_argmax_11", gecode_constraint_argmax_11, 5);
YAP_UserCPredicate("gecode_constraint_argmax_12", gecode_constraint_argmax_12, 6);
YAP_UserCPredicate("gecode_constraint_argmin_13", gecode_constraint_argmin_13, 3);
YAP_UserCPredicate("gecode_constraint_argmin_14", gecode_constraint_argmin_14, 4);
YAP_UserCPredicate("gecode_constraint_argmin_16", gecode_constraint_argmin_16, 4);
YAP_UserCPredicate("gecode_constraint_argmin_15", gecode_constraint_argmin_15, 5);
YAP_UserCPredicate("gecode_constraint_argmin_17", gecode_constraint_argmin_17, 5);
YAP_UserCPredicate("gecode_constraint_argmin_18", gecode_constraint_argmin_18, 6);
YAP_UserCPredicate("gecode_constraint_assign_19", gecode_constraint_assign_19, 3);
YAP_UserCPredicate("gecode_constraint_assign_21", gecode_constraint_assign_21, 3);
YAP_UserCPredicate("gecode_constraint_assign_23", gecode_constraint_assign_23, 3);
YAP_UserCPredicate("gecode_constraint_assign_25", gecode_constraint_assign_25, 3);
YAP_UserCPredicate("gecode_constraint_assign_27", gecode_constraint_assign_27, 3);
YAP_UserCPredicate("gecode_constraint_assign_30", gecode_constraint_assign_30, 3);
YAP_UserCPredicate("gecode_constraint_assign_33", gecode_constraint_assign_33, 3);
YAP_UserCPredicate("gecode_constraint_assign_36", gecode_constraint_assign_36, 3);
YAP_UserCPredicate("gecode_constraint_assign_20", gecode_constraint_assign_20, 4);
YAP_UserCPredicate("gecode_constraint_assign_22", gecode_constraint_assign_22, 4);
YAP_UserCPredicate("gecode_constraint_assign_24", gecode_constraint_assign_24, 4);
YAP_UserCPredicate("gecode_constraint_assign_26", gecode_constraint_assign_26, 4);
YAP_UserCPredicate("gecode_constraint_assign_28", gecode_constraint_assign_28, 4);
YAP_UserCPredicate("gecode_constraint_assign_31", gecode_constraint_assign_31, 4);
YAP_UserCPredicate("gecode_constraint_assign_34", gecode_constraint_assign_34, 4);
YAP_UserCPredicate("gecode_constraint_assign_37", gecode_constraint_assign_37, 4);
YAP_UserCPredicate("gecode_constraint_assign_29", gecode_constraint_assign_29, 5);
YAP_UserCPredicate("gecode_constraint_assign_32", gecode_constraint_assign_32, 5);
YAP_UserCPredicate("gecode_constraint_assign_35", gecode_constraint_assign_35, 5);
YAP_UserCPredicate("gecode_constraint_assign_38", gecode_constraint_assign_38, 5);
YAP_UserCPredicate("gecode_constraint_binpacking_39", gecode_constraint_binpacking_39, 4);
YAP_UserCPredicate("gecode_constraint_binpacking_40", gecode_constraint_binpacking_40, 5);
YAP_UserCPredicate("gecode_constraint_branch_41", gecode_constraint_branch_41, 3);
YAP_UserCPredicate("gecode_constraint_branch_43", gecode_constraint_branch_43, 3);
YAP_UserCPredicate("gecode_constraint_branch_45", gecode_constraint_branch_45, 3);
YAP_UserCPredicate("gecode_constraint_branch_47", gecode_constraint_branch_47, 3);
YAP_UserCPredicate("gecode_constraint_branch_42", gecode_constraint_branch_42, 4);
YAP_UserCPredicate("gecode_constraint_branch_44", gecode_constraint_branch_44, 4);
YAP_UserCPredicate("gecode_constraint_branch_46", gecode_constraint_branch_46, 4);
YAP_UserCPredicate("gecode_constraint_branch_48", gecode_constraint_branch_48, 4);
YAP_UserCPredicate("gecode_constraint_branch_49", gecode_constraint_branch_49, 4);
YAP_UserCPredicate("gecode_constraint_branch_55", gecode_constraint_branch_55, 4);
YAP_UserCPredicate("gecode_constraint_branch_61", gecode_constraint_branch_61, 4);
YAP_UserCPredicate("gecode_constraint_branch_64", gecode_constraint_branch_64, 4);
YAP_UserCPredicate("gecode_constraint_branch_67", gecode_constraint_branch_67, 4);
YAP_UserCPredicate("gecode_constraint_branch_73", gecode_constraint_branch_73, 4);
YAP_UserCPredicate("gecode_constraint_branch_79", gecode_constraint_branch_79, 4);
YAP_UserCPredicate("gecode_constraint_branch_85", gecode_constraint_branch_85, 4);
YAP_UserCPredicate("gecode_constraint_branch_50", gecode_constraint_branch_50, 5);
YAP_UserCPredicate("gecode_constraint_branch_52", gecode_constraint_branch_52, 5);
YAP_UserCPredicate("gecode_constraint_branch_56", gecode_constraint_branch_56, 5);
YAP_UserCPredicate("gecode_constraint_branch_58", gecode_constraint_branch_58, 5);
YAP_UserCPredicate("gecode_constraint_branch_62", gecode_constraint_branch_62, 5);
YAP_UserCPredicate("gecode_constraint_branch_65", gecode_constraint_branch_65, 5);
YAP_UserCPredicate("gecode_constraint_branch_68", gecode_constraint_branch_68, 5);
YAP_UserCPredicate("gecode_constraint_branch_70", gecode_constraint_branch_70, 5);
YAP_UserCPredicate("gecode_constraint_branch_74", gecode_constraint_branch_74, 5);
YAP_UserCPredicate("gecode_constraint_branch_76", gecode_constraint_branch_76, 5);
YAP_UserCPredicate("gecode_constraint_branch_80", gecode_constraint_branch_80, 5);
YAP_UserCPredicate("gecode_constraint_branch_82", gecode_constraint_branch_82, 5);
YAP_UserCPredicate("gecode_constraint_branch_86", gecode_constraint_branch_86, 5);
YAP_UserCPredicate("gecode_constraint_branch_88", gecode_constraint_branch_88, 5);
YAP_UserCPredicate("gecode_constraint_branch_51", gecode_constraint_branch_51, 6);
YAP_UserCPredicate("gecode_constraint_branch_53", gecode_constraint_branch_53, 6);
YAP_UserCPredicate("gecode_constraint_branch_57", gecode_constraint_branch_57, 6);
YAP_UserCPredicate("gecode_constraint_branch_59", gecode_constraint_branch_59, 6);
YAP_UserCPredicate("gecode_constraint_branch_63", gecode_constraint_branch_63, 6);
YAP_UserCPredicate("gecode_constraint_branch_66", gecode_constraint_branch_66, 6);
YAP_UserCPredicate("gecode_constraint_branch_69", gecode_constraint_branch_69, 6);
YAP_UserCPredicate("gecode_constraint_branch_71", gecode_constraint_branch_71, 6);
YAP_UserCPredicate("gecode_constraint_branch_75", gecode_constraint_branch_75, 6);
YAP_UserCPredicate("gecode_constraint_branch_77", gecode_constraint_branch_77, 6);
YAP_UserCPredicate("gecode_constraint_branch_81", gecode_constraint_branch_81, 6);
YAP_UserCPredicate("gecode_constraint_branch_83", gecode_constraint_branch_83, 6);
YAP_UserCPredicate("gecode_constraint_branch_87", gecode_constraint_branch_87, 6);
YAP_UserCPredicate("gecode_constraint_branch_89", gecode_constraint_branch_89, 6);
YAP_UserCPredicate("gecode_constraint_branch_54", gecode_constraint_branch_54, 7);
YAP_UserCPredicate("gecode_constraint_branch_60", gecode_constraint_branch_60, 7);
YAP_UserCPredicate("gecode_constraint_branch_72", gecode_constraint_branch_72, 7);
YAP_UserCPredicate("gecode_constraint_branch_78", gecode_constraint_branch_78, 7);
YAP_UserCPredicate("gecode_constraint_branch_84", gecode_constraint_branch_84, 7);
YAP_UserCPredicate("gecode_constraint_branch_90", gecode_constraint_branch_90, 7);
YAP_UserCPredicate("gecode_constraint_cardinality_91", gecode_constraint_cardinality_91, 4);
YAP_UserCPredicate("gecode_constraint_cardinality_92", gecode_constraint_cardinality_92, 4);
YAP_UserCPredicate("gecode_constraint_channel_93", gecode_constraint_channel_93, 3);
YAP_UserCPredicate("gecode_constraint_channel_95", gecode_constraint_channel_95, 3);
YAP_UserCPredicate("gecode_constraint_channel_96", gecode_constraint_channel_96, 3);
YAP_UserCPredicate("gecode_constraint_channel_97", gecode_constraint_channel_97, 3);
YAP_UserCPredicate("gecode_constraint_channel_100", gecode_constraint_channel_100, 3);
YAP_UserCPredicate("gecode_constraint_channel_94", gecode_constraint_channel_94, 4);
YAP_UserCPredicate("gecode_constraint_channel_98", gecode_constraint_channel_98, 4);
YAP_UserCPredicate("gecode_constraint_channel_101", gecode_constraint_channel_101, 4);
YAP_UserCPredicate("gecode_constraint_channel_99", gecode_constraint_channel_99, 5);
YAP_UserCPredicate("gecode_constraint_channel_102", gecode_constraint_channel_102, 5);
YAP_UserCPredicate("gecode_constraint_channel_103", gecode_constraint_channel_103, 6);
YAP_UserCPredicate("gecode_constraint_circuit_104", gecode_constraint_circuit_104, 4);
YAP_UserCPredicate("gecode_constraint_circuit_115", gecode_constraint_circuit_115, 4);
YAP_UserCPredicate("gecode_constraint_circuit_105", gecode_constraint_circuit_105, 5);
YAP_UserCPredicate("gecode_constraint_circuit_106", gecode_constraint_circuit_106, 5);
YAP_UserCPredicate("gecode_constraint_circuit_108", gecode_constraint_circuit_108, 5);
YAP_UserCPredicate("gecode_constraint_circuit_107", gecode_constraint_circuit_107, 6);
YAP_UserCPredicate("gecode_constraint_circuit_109", gecode_constraint_circuit_109, 6);
YAP_UserCPredicate("gecode_constraint_circuit_110", gecode_constraint_circuit_110, 6);
YAP_UserCPredicate("gecode_constraint_circuit_111", gecode_constraint_circuit_111, 7);
YAP_UserCPredicate("gecode_constraint_circuit_112", gecode_constraint_circuit_112, 2);
YAP_UserCPredicate("gecode_constraint_circuit_113", gecode_constraint_circuit_113, 3);
YAP_UserCPredicate("gecode_constraint_circuit_114", gecode_constraint_circuit_114, 3);
YAP_UserCPredicate("gecode_constraint_clause_116", gecode_constraint_clause_116, 5);
YAP_UserCPredicate("gecode_constraint_clause_118", gecode_constraint_clause_118, 5);
YAP_UserCPredicate("gecode_constraint_clause_117", gecode_constraint_clause_117, 6);
YAP_UserCPredicate("gecode_constraint_clause_119", gecode_constraint_clause_119, 6);
YAP_UserCPredicate("gecode_constraint_count_120", gecode_constraint_count_120, 5);
YAP_UserCPredicate("gecode_constraint_count_122", gecode_constraint_count_122, 5);
YAP_UserCPredicate("gecode_constraint_count_124", gecode_constraint_count_124, 5);
YAP_UserCPredicate("gecode_constraint_count_126", gecode_constraint_count_126, 5);
YAP_UserCPredicate("gecode_constraint_count_128", gecode_constraint_count_128, 5);
YAP_UserCPredicate("gecode_constraint_count_130", gecode_constraint_count_130, 5);
YAP_UserCPredicate("gecode_constraint_count_133", gecode_constraint_count_133, 5);
YAP_UserCPredicate("gecode_constraint_count_137", gecode_constraint_count_137, 5);
YAP_UserCPredicate("gecode_constraint_count_141", gecode_constraint_count_141, 5);
YAP_UserCPredicate("gecode_constraint_count_142", gecode_constraint_count_142, 5);
YAP_UserCPredicate("gecode_constraint_count_144", gecode_constraint_count_144, 5);
YAP_UserCPredicate("gecode_constraint_count_121", gecode_constraint_count_121, 6);
YAP_UserCPredicate("gecode_constraint_count_123", gecode_constraint_count_123, 6);
YAP_UserCPredicate("gecode_constraint_count_125", gecode_constraint_count_125, 6);
YAP_UserCPredicate("gecode_constraint_count_127", gecode_constraint_count_127, 6);
YAP_UserCPredicate("gecode_constraint_count_129", gecode_constraint_count_129, 6);
YAP_UserCPredicate("gecode_constraint_count_131", gecode_constraint_count_131, 6);
YAP_UserCPredicate("gecode_constraint_count_143", gecode_constraint_count_143, 6);
YAP_UserCPredicate("gecode_constraint_count_145", gecode_constraint_count_145, 6);
YAP_UserCPredicate("gecode_constraint_count_132", gecode_constraint_count_132, 4);
YAP_UserCPredicate("gecode_constraint_count_135", gecode_constraint_count_135, 4);
YAP_UserCPredicate("gecode_constraint_count_136", gecode_constraint_count_136, 4);
YAP_UserCPredicate("gecode_constraint_count_139", gecode_constraint_count_139, 4);
YAP_UserCPredicate("gecode_constraint_count_140", gecode_constraint_count_140, 4);
YAP_UserCPredicate("gecode_constraint_count_134", gecode_constraint_count_134, 3);
YAP_UserCPredicate("gecode_constraint_count_138", gecode_constraint_count_138, 3);
YAP_UserCPredicate("gecode_constraint_cumulative_146", gecode_constraint_cumulative_146, 5);
YAP_UserCPredicate("gecode_constraint_cumulative_158", gecode_constraint_cumulative_158, 5);
YAP_UserCPredicate("gecode_constraint_cumulative_147", gecode_constraint_cumulative_147, 6);
YAP_UserCPredicate("gecode_constraint_cumulative_148", gecode_constraint_cumulative_148, 6);
YAP_UserCPredicate("gecode_constraint_cumulative_150", gecode_constraint_cumulative_150, 6);
YAP_UserCPredicate("gecode_constraint_cumulative_154", gecode_constraint_cumulative_154, 6);
YAP_UserCPredicate("gecode_constraint_cumulative_159", gecode_constraint_cumulative_159, 6);
YAP_UserCPredicate("gecode_constraint_cumulative_160", gecode_constraint_cumulative_160, 6);
YAP_UserCPredicate("gecode_constraint_cumulative_162", gecode_constraint_cumulative_162, 6);
YAP_UserCPredicate("gecode_constraint_cumulative_166", gecode_constraint_cumulative_166, 6);
YAP_UserCPredicate("gecode_constraint_cumulative_149", gecode_constraint_cumulative_149, 7);
YAP_UserCPredicate("gecode_constraint_cumulative_151", gecode_constraint_cumulative_151, 7);
YAP_UserCPredicate("gecode_constraint_cumulative_152", gecode_constraint_cumulative_152, 7);
YAP_UserCPredicate("gecode_constraint_cumulative_155", gecode_constraint_cumulative_155, 7);
YAP_UserCPredicate("gecode_constraint_cumulative_156", gecode_constraint_cumulative_156, 7);
YAP_UserCPredicate("gecode_constraint_cumulative_161", gecode_constraint_cumulative_161, 7);
YAP_UserCPredicate("gecode_constraint_cumulative_163", gecode_constraint_cumulative_163, 7);
YAP_UserCPredicate("gecode_constraint_cumulative_164", gecode_constraint_cumulative_164, 7);
YAP_UserCPredicate("gecode_constraint_cumulative_167", gecode_constraint_cumulative_167, 7);
YAP_UserCPredicate("gecode_constraint_cumulative_168", gecode_constraint_cumulative_168, 7);
YAP_UserCPredicate("gecode_constraint_cumulative_153", gecode_constraint_cumulative_153, 8);
YAP_UserCPredicate("gecode_constraint_cumulative_157", gecode_constraint_cumulative_157, 8);
YAP_UserCPredicate("gecode_constraint_cumulative_165", gecode_constraint_cumulative_165, 8);
YAP_UserCPredicate("gecode_constraint_cumulative_169", gecode_constraint_cumulative_169, 8);
YAP_UserCPredicate("gecode_constraint_cumulatives_170", gecode_constraint_cumulatives_170, 8);
YAP_UserCPredicate("gecode_constraint_cumulatives_172", gecode_constraint_cumulatives_172, 8);
YAP_UserCPredicate("gecode_constraint_cumulatives_174", gecode_constraint_cumulatives_174, 8);
YAP_UserCPredicate("gecode_constraint_cumulatives_176", gecode_constraint_cumulatives_176, 8);
YAP_UserCPredicate("gecode_constraint_cumulatives_178", gecode_constraint_cumulatives_178, 8);
YAP_UserCPredicate("gecode_constraint_cumulatives_180", gecode_constraint_cumulatives_180, 8);
YAP_UserCPredicate("gecode_constraint_cumulatives_182", gecode_constraint_cumulatives_182, 8);
YAP_UserCPredicate("gecode_constraint_cumulatives_184", gecode_constraint_cumulatives_184, 8);
YAP_UserCPredicate("gecode_constraint_cumulatives_171", gecode_constraint_cumulatives_171, 9);
YAP_UserCPredicate("gecode_constraint_cumulatives_173", gecode_constraint_cumulatives_173, 9);
YAP_UserCPredicate("gecode_constraint_cumulatives_175", gecode_constraint_cumulatives_175, 9);
YAP_UserCPredicate("gecode_constraint_cumulatives_177", gecode_constraint_cumulatives_177, 9);
YAP_UserCPredicate("gecode_constraint_cumulatives_179", gecode_constraint_cumulatives_179, 9);
YAP_UserCPredicate("gecode_constraint_cumulatives_181", gecode_constraint_cumulatives_181, 9);
YAP_UserCPredicate("gecode_constraint_cumulatives_183", gecode_constraint_cumulatives_183, 9);
YAP_UserCPredicate("gecode_constraint_cumulatives_185", gecode_constraint_cumulatives_185, 9);
YAP_UserCPredicate("gecode_constraint_distinct_186", gecode_constraint_distinct_186, 3);
YAP_UserCPredicate("gecode_constraint_distinct_188", gecode_constraint_distinct_188, 3);
YAP_UserCPredicate("gecode_constraint_distinct_191", gecode_constraint_distinct_191, 3);
YAP_UserCPredicate("gecode_constraint_distinct_192", gecode_constraint_distinct_192, 3);
YAP_UserCPredicate("gecode_constraint_distinct_187", gecode_constraint_distinct_187, 4);
YAP_UserCPredicate("gecode_constraint_distinct_189", gecode_constraint_distinct_189, 4);
YAP_UserCPredicate("gecode_constraint_distinct_193", gecode_constraint_distinct_193, 4);
YAP_UserCPredicate("gecode_constraint_distinct_190", gecode_constraint_distinct_190, 2);
YAP_UserCPredicate("gecode_constraint_div_194", gecode_constraint_div_194, 4);
YAP_UserCPredicate("gecode_constraint_div_195", gecode_constraint_div_195, 4);
YAP_UserCPredicate("gecode_constraint_div_196", gecode_constraint_div_196, 5);
YAP_UserCPredicate("gecode_constraint_divmod_197", gecode_constraint_divmod_197, 5);
YAP_UserCPredicate("gecode_constraint_divmod_198", gecode_constraint_divmod_198, 6);
YAP_UserCPredicate("gecode_constraint_dom_199", gecode_constraint_dom_199, 3);
YAP_UserCPredicate("gecode_constraint_dom_203", gecode_constraint_dom_203, 3);
YAP_UserCPredicate("gecode_constraint_dom_205", gecode_constraint_dom_205, 3);
YAP_UserCPredicate("gecode_constraint_dom_206", gecode_constraint_dom_206, 3);
YAP_UserCPredicate("gecode_constraint_dom_208", gecode_constraint_dom_208, 3);
YAP_UserCPredicate("gecode_constraint_dom_212", gecode_constraint_dom_212, 3);
YAP_UserCPredicate("gecode_constraint_dom_226", gecode_constraint_dom_226, 3);
YAP_UserCPredicate("gecode_constraint_dom_227", gecode_constraint_dom_227, 3);
YAP_UserCPredicate("gecode_constraint_dom_230", gecode_constraint_dom_230, 3);
YAP_UserCPredicate("gecode_constraint_dom_231", gecode_constraint_dom_231, 3);
YAP_UserCPredicate("gecode_constraint_dom_232", gecode_constraint_dom_232, 3);
YAP_UserCPredicate("gecode_constraint_dom_234", gecode_constraint_dom_234, 3);
YAP_UserCPredicate("gecode_constraint_dom_236", gecode_constraint_dom_236, 3);
YAP_UserCPredicate("gecode_constraint_dom_243", gecode_constraint_dom_243, 3);
YAP_UserCPredicate("gecode_constraint_dom_200", gecode_constraint_dom_200, 4);
YAP_UserCPredicate("gecode_constraint_dom_201", gecode_constraint_dom_201, 4);
YAP_UserCPredicate("gecode_constraint_dom_204", gecode_constraint_dom_204, 4);
YAP_UserCPredicate("gecode_constraint_dom_207", gecode_constraint_dom_207, 4);
YAP_UserCPredicate("gecode_constraint_dom_209", gecode_constraint_dom_209, 4);
YAP_UserCPredicate("gecode_constraint_dom_210", gecode_constraint_dom_210, 4);
YAP_UserCPredicate("gecode_constraint_dom_213", gecode_constraint_dom_213, 4);
YAP_UserCPredicate("gecode_constraint_dom_214", gecode_constraint_dom_214, 4);
YAP_UserCPredicate("gecode_constraint_dom_216", gecode_constraint_dom_216, 4);
YAP_UserCPredicate("gecode_constraint_dom_220", gecode_constraint_dom_220, 4);
YAP_UserCPredicate("gecode_constraint_dom_222", gecode_constraint_dom_222, 4);
YAP_UserCPredicate("gecode_constraint_dom_228", gecode_constraint_dom_228, 4);
YAP_UserCPredicate("gecode_constraint_dom_229", gecode_constraint_dom_229, 4);
YAP_UserCPredicate("gecode_constraint_dom_233", gecode_constraint_dom_233, 4);
YAP_UserCPredicate("gecode_constraint_dom_235", gecode_constraint_dom_235, 4);
YAP_UserCPredicate("gecode_constraint_dom_237", gecode_constraint_dom_237, 4);
YAP_UserCPredicate("gecode_constraint_dom_238", gecode_constraint_dom_238, 4);
YAP_UserCPredicate("gecode_constraint_dom_240", gecode_constraint_dom_240, 4);
YAP_UserCPredicate("gecode_constraint_dom_241", gecode_constraint_dom_241, 4);
YAP_UserCPredicate("gecode_constraint_dom_202", gecode_constraint_dom_202, 5);
YAP_UserCPredicate("gecode_constraint_dom_211", gecode_constraint_dom_211, 5);
YAP_UserCPredicate("gecode_constraint_dom_215", gecode_constraint_dom_215, 5);
YAP_UserCPredicate("gecode_constraint_dom_217", gecode_constraint_dom_217, 5);
YAP_UserCPredicate("gecode_constraint_dom_218", gecode_constraint_dom_218, 5);
YAP_UserCPredicate("gecode_constraint_dom_221", gecode_constraint_dom_221, 5);
YAP_UserCPredicate("gecode_constraint_dom_223", gecode_constraint_dom_223, 5);
YAP_UserCPredicate("gecode_constraint_dom_224", gecode_constraint_dom_224, 5);
YAP_UserCPredicate("gecode_constraint_dom_239", gecode_constraint_dom_239, 5);
YAP_UserCPredicate("gecode_constraint_dom_242", gecode_constraint_dom_242, 5);
YAP_UserCPredicate("gecode_constraint_dom_219", gecode_constraint_dom_219, 6);
YAP_UserCPredicate("gecode_constraint_dom_225", gecode_constraint_dom_225, 6);
YAP_UserCPredicate("gecode_constraint_element_244", gecode_constraint_element_244, 4);
YAP_UserCPredicate("gecode_constraint_element_246", gecode_constraint_element_246, 4);
YAP_UserCPredicate("gecode_constraint_element_248", gecode_constraint_element_248, 4);
YAP_UserCPredicate("gecode_constraint_element_254", gecode_constraint_element_254, 4);
YAP_UserCPredicate("gecode_constraint_element_256", gecode_constraint_element_256, 4);
YAP_UserCPredicate("gecode_constraint_element_260", gecode_constraint_element_260, 4);
YAP_UserCPredicate("gecode_constraint_element_262", gecode_constraint_element_262, 4);
YAP_UserCPredicate("gecode_constraint_element_245", gecode_constraint_element_245, 5);
YAP_UserCPredicate("gecode_constraint_element_247", gecode_constraint_element_247, 5);
YAP_UserCPredicate("gecode_constraint_element_249", gecode_constraint_element_249, 5);
YAP_UserCPredicate("gecode_constraint_element_255", gecode_constraint_element_255, 5);
YAP_UserCPredicate("gecode_constraint_element_257", gecode_constraint_element_257, 5);
YAP_UserCPredicate("gecode_constraint_element_261", gecode_constraint_element_261, 5);
YAP_UserCPredicate("gecode_constraint_element_263", gecode_constraint_element_263, 5);
YAP_UserCPredicate("gecode_constraint_element_250", gecode_constraint_element_250, 7);
YAP_UserCPredicate("gecode_constraint_element_252", gecode_constraint_element_252, 7);
YAP_UserCPredicate("gecode_constraint_element_258", gecode_constraint_element_258, 7);
YAP_UserCPredicate("gecode_constraint_element_264", gecode_constraint_element_264, 7);
YAP_UserCPredicate("gecode_constraint_element_251", gecode_constraint_element_251, 8);
YAP_UserCPredicate("gecode_constraint_element_253", gecode_constraint_element_253, 8);
YAP_UserCPredicate("gecode_constraint_element_259", gecode_constraint_element_259, 8);
YAP_UserCPredicate("gecode_constraint_element_265", gecode_constraint_element_265, 8);
YAP_UserCPredicate("gecode_constraint_extensional_266", gecode_constraint_extensional_266, 3);
YAP_UserCPredicate("gecode_constraint_extensional_272", gecode_constraint_extensional_272, 3);
YAP_UserCPredicate("gecode_constraint_extensional_267", gecode_constraint_extensional_267, 4);
YAP_UserCPredicate("gecode_constraint_extensional_268", gecode_constraint_extensional_268, 4);
YAP_UserCPredicate("gecode_constraint_extensional_273", gecode_constraint_extensional_273, 4);
YAP_UserCPredicate("gecode_constraint_extensional_274", gecode_constraint_extensional_274, 4);
YAP_UserCPredicate("gecode_constraint_extensional_269", gecode_constraint_extensional_269, 5);
YAP_UserCPredicate("gecode_constraint_extensional_270", gecode_constraint_extensional_270, 5);
YAP_UserCPredicate("gecode_constraint_extensional_275", gecode_constraint_extensional_275, 5);
YAP_UserCPredicate("gecode_constraint_extensional_276", gecode_constraint_extensional_276, 5);
YAP_UserCPredicate("gecode_constraint_extensional_271", gecode_constraint_extensional_271, 6);
YAP_UserCPredicate("gecode_constraint_extensional_277", gecode_constraint_extensional_277, 6);
YAP_UserCPredicate("gecode_constraint_ite_278", gecode_constraint_ite_278, 5);
YAP_UserCPredicate("gecode_constraint_ite_280", gecode_constraint_ite_280, 5);
YAP_UserCPredicate("gecode_constraint_ite_281", gecode_constraint_ite_281, 5);
YAP_UserCPredicate("gecode_constraint_ite_283", gecode_constraint_ite_283, 5);
YAP_UserCPredicate("gecode_constraint_ite_279", gecode_constraint_ite_279, 6);
YAP_UserCPredicate("gecode_constraint_ite_282", gecode_constraint_ite_282, 6);
YAP_UserCPredicate("gecode_constraint_linear_284", gecode_constraint_linear_284, 4);
YAP_UserCPredicate("gecode_constraint_linear_288", gecode_constraint_linear_288, 4);
YAP_UserCPredicate("gecode_constraint_linear_296", gecode_constraint_linear_296, 4);
YAP_UserCPredicate("gecode_constraint_linear_298", gecode_constraint_linear_298, 4);
YAP_UserCPredicate("gecode_constraint_linear_316", gecode_constraint_linear_316, 4);
YAP_UserCPredicate("gecode_constraint_linear_320", gecode_constraint_linear_320, 4);
YAP_UserCPredicate("gecode_constraint_linear_285", gecode_constraint_linear_285, 5);
YAP_UserCPredicate("gecode_constraint_linear_286", gecode_constraint_linear_286, 5);
YAP_UserCPredicate("gecode_constraint_linear_289", gecode_constraint_linear_289, 5);
YAP_UserCPredicate("gecode_constraint_linear_290", gecode_constraint_linear_290, 5);
YAP_UserCPredicate("gecode_constraint_linear_292", gecode_constraint_linear_292, 5);
YAP_UserCPredicate("gecode_constraint_linear_294", gecode_constraint_linear_294, 5);
YAP_UserCPredicate("gecode_constraint_linear_297", gecode_constraint_linear_297, 5);
YAP_UserCPredicate("gecode_constraint_linear_299", gecode_constraint_linear_299, 5);
YAP_UserCPredicate("gecode_constraint_linear_300", gecode_constraint_linear_300, 5);
YAP_UserCPredicate("gecode_constraint_linear_304", gecode_constraint_linear_304, 5);
YAP_UserCPredicate("gecode_constraint_linear_308", gecode_constraint_linear_308, 5);
YAP_UserCPredicate("gecode_constraint_linear_312", gecode_constraint_linear_312, 5);
YAP_UserCPredicate("gecode_constraint_linear_317", gecode_constraint_linear_317, 5);
YAP_UserCPredicate("gecode_constraint_linear_318", gecode_constraint_linear_318, 5);
YAP_UserCPredicate("gecode_constraint_linear_321", gecode_constraint_linear_321, 5);
YAP_UserCPredicate("gecode_constraint_linear_322", gecode_constraint_linear_322, 5);
YAP_UserCPredicate("gecode_constraint_linear_287", gecode_constraint_linear_287, 6);
YAP_UserCPredicate("gecode_constraint_linear_291", gecode_constraint_linear_291, 6);
YAP_UserCPredicate("gecode_constraint_linear_293", gecode_constraint_linear_293, 6);
YAP_UserCPredicate("gecode_constraint_linear_295", gecode_constraint_linear_295, 6);
YAP_UserCPredicate("gecode_constraint_linear_301", gecode_constraint_linear_301, 6);
YAP_UserCPredicate("gecode_constraint_linear_302", gecode_constraint_linear_302, 6);
YAP_UserCPredicate("gecode_constraint_linear_305", gecode_constraint_linear_305, 6);
YAP_UserCPredicate("gecode_constraint_linear_306", gecode_constraint_linear_306, 6);
YAP_UserCPredicate("gecode_constraint_linear_309", gecode_constraint_linear_309, 6);
YAP_UserCPredicate("gecode_constraint_linear_310", gecode_constraint_linear_310, 6);
YAP_UserCPredicate("gecode_constraint_linear_313", gecode_constraint_linear_313, 6);
YAP_UserCPredicate("gecode_constraint_linear_314", gecode_constraint_linear_314, 6);
YAP_UserCPredicate("gecode_constraint_linear_319", gecode_constraint_linear_319, 6);
YAP_UserCPredicate("gecode_constraint_linear_323", gecode_constraint_linear_323, 6);
YAP_UserCPredicate("gecode_constraint_linear_303", gecode_constraint_linear_303, 7);
YAP_UserCPredicate("gecode_constraint_linear_307", gecode_constraint_linear_307, 7);
YAP_UserCPredicate("gecode_constraint_linear_311", gecode_constraint_linear_311, 7);
YAP_UserCPredicate("gecode_constraint_linear_315", gecode_constraint_linear_315, 7);
YAP_UserCPredicate("gecode_constraint_max_324", gecode_constraint_max_324, 4);
YAP_UserCPredicate("gecode_constraint_max_325", gecode_constraint_max_325, 4);
YAP_UserCPredicate("gecode_constraint_max_329", gecode_constraint_max_329, 4);
YAP_UserCPredicate("gecode_constraint_max_326", gecode_constraint_max_326, 5);
YAP_UserCPredicate("gecode_constraint_max_327", gecode_constraint_max_327, 3);
YAP_UserCPredicate("gecode_constraint_max_328", gecode_constraint_max_328, 3);
YAP_UserCPredicate("gecode_constraint_member_330", gecode_constraint_member_330, 3);
YAP_UserCPredicate("gecode_constraint_member_334", gecode_constraint_member_334, 3);
YAP_UserCPredicate("gecode_constraint_member_331", gecode_constraint_member_331, 4);
YAP_UserCPredicate("gecode_constraint_member_332", gecode_constraint_member_332, 4);
YAP_UserCPredicate("gecode_constraint_member_335", gecode_constraint_member_335, 4);
YAP_UserCPredicate("gecode_constraint_member_336", gecode_constraint_member_336, 4);
YAP_UserCPredicate("gecode_constraint_member_333", gecode_constraint_member_333, 5);
YAP_UserCPredicate("gecode_constraint_member_337", gecode_constraint_member_337, 5);
YAP_UserCPredicate("gecode_constraint_min_338", gecode_constraint_min_338, 4);
YAP_UserCPredicate("gecode_constraint_min_339", gecode_constraint_min_339, 4);
YAP_UserCPredicate("gecode_constraint_min_343", gecode_constraint_min_343, 4);
YAP_UserCPredicate("gecode_constraint_min_340", gecode_constraint_min_340, 5);
YAP_UserCPredicate("gecode_constraint_min_341", gecode_constraint_min_341, 3);
YAP_UserCPredicate("gecode_constraint_min_342", gecode_constraint_min_342, 3);
YAP_UserCPredicate("gecode_constraint_mod_344", gecode_constraint_mod_344, 4);
YAP_UserCPredicate("gecode_constraint_mod_345", gecode_constraint_mod_345, 5);
YAP_UserCPredicate("gecode_constraint_mult_346", gecode_constraint_mult_346, 4);
YAP_UserCPredicate("gecode_constraint_mult_347", gecode_constraint_mult_347, 4);
YAP_UserCPredicate("gecode_constraint_mult_348", gecode_constraint_mult_348, 5);
YAP_UserCPredicate("gecode_constraint_nooverlap_349", gecode_constraint_nooverlap_349, 5);
YAP_UserCPredicate("gecode_constraint_nooverlap_350", gecode_constraint_nooverlap_350, 6);
YAP_UserCPredicate("gecode_constraint_nooverlap_351", gecode_constraint_nooverlap_351, 6);
YAP_UserCPredicate("gecode_constraint_nooverlap_352", gecode_constraint_nooverlap_352, 7);
YAP_UserCPredicate("gecode_constraint_nooverlap_353", gecode_constraint_nooverlap_353, 7);
YAP_UserCPredicate("gecode_constraint_nooverlap_354", gecode_constraint_nooverlap_354, 8);
YAP_UserCPredicate("gecode_constraint_nooverlap_355", gecode_constraint_nooverlap_355, 8);
YAP_UserCPredicate("gecode_constraint_nooverlap_356", gecode_constraint_nooverlap_356, 9);
YAP_UserCPredicate("gecode_constraint_nroot_357", gecode_constraint_nroot_357, 4);
YAP_UserCPredicate("gecode_constraint_nroot_358", gecode_constraint_nroot_358, 4);
YAP_UserCPredicate("gecode_constraint_nroot_359", gecode_constraint_nroot_359, 5);
YAP_UserCPredicate("gecode_constraint_nvalues_360", gecode_constraint_nvalues_360, 4);
YAP_UserCPredicate("gecode_constraint_nvalues_362", gecode_constraint_nvalues_362, 4);
YAP_UserCPredicate("gecode_constraint_nvalues_364", gecode_constraint_nvalues_364, 4);
YAP_UserCPredicate("gecode_constraint_nvalues_366", gecode_constraint_nvalues_366, 4);
YAP_UserCPredicate("gecode_constraint_nvalues_361", gecode_constraint_nvalues_361, 5);
YAP_UserCPredicate("gecode_constraint_nvalues_363", gecode_constraint_nvalues_363, 5);
YAP_UserCPredicate("gecode_constraint_nvalues_365", gecode_constraint_nvalues_365, 5);
YAP_UserCPredicate("gecode_constraint_nvalues_367", gecode_constraint_nvalues_367, 5);
YAP_UserCPredicate("gecode_constraint_path_368", gecode_constraint_path_368, 6);
YAP_UserCPredicate("gecode_constraint_path_379", gecode_constraint_path_379, 6);
YAP_UserCPredicate("gecode_constraint_path_369", gecode_constraint_path_369, 7);
YAP_UserCPredicate("gecode_constraint_path_370", gecode_constraint_path_370, 7);
YAP_UserCPredicate("gecode_constraint_path_372", gecode_constraint_path_372, 7);
YAP_UserCPredicate("gecode_constraint_path_371", gecode_constraint_path_371, 8);
YAP_UserCPredicate("gecode_constraint_path_373", gecode_constraint_path_373, 8);
YAP_UserCPredicate("gecode_constraint_path_374", gecode_constraint_path_374, 8);
YAP_UserCPredicate("gecode_constraint_path_375", gecode_constraint_path_375, 9);
YAP_UserCPredicate("gecode_constraint_path_376", gecode_constraint_path_376, 4);
YAP_UserCPredicate("gecode_constraint_path_377", gecode_constraint_path_377, 5);
YAP_UserCPredicate("gecode_constraint_path_378", gecode_constraint_path_378, 5);
YAP_UserCPredicate("gecode_constraint_pow_380", gecode_constraint_pow_380, 4);
YAP_UserCPredicate("gecode_constraint_pow_381", gecode_constraint_pow_381, 4);
YAP_UserCPredicate("gecode_constraint_pow_382", gecode_constraint_pow_382, 5);
YAP_UserCPredicate("gecode_constraint_precede_383", gecode_constraint_precede_383, 3);
YAP_UserCPredicate("gecode_constraint_precede_384", gecode_constraint_precede_384, 4);
YAP_UserCPredicate("gecode_constraint_precede_385", gecode_constraint_precede_385, 4);
YAP_UserCPredicate("gecode_constraint_precede_386", gecode_constraint_precede_386, 5);
YAP_UserCPredicate("gecode_constraint_rel_387", gecode_constraint_rel_387, 4);
YAP_UserCPredicate("gecode_constraint_rel_389", gecode_constraint_rel_389, 4);
YAP_UserCPredicate("gecode_constraint_rel_395", gecode_constraint_rel_395, 4);
YAP_UserCPredicate("gecode_constraint_rel_399", gecode_constraint_rel_399, 4);
YAP_UserCPredicate("gecode_constraint_rel_403", gecode_constraint_rel_403, 4);
YAP_UserCPredicate("gecode_constraint_rel_405", gecode_constraint_rel_405, 4);
YAP_UserCPredicate("gecode_constraint_rel_407", gecode_constraint_rel_407, 4);
YAP_UserCPredicate("gecode_constraint_rel_411", gecode_constraint_rel_411, 4);
YAP_UserCPredicate("gecode_constraint_rel_415", gecode_constraint_rel_415, 4);
YAP_UserCPredicate("gecode_constraint_rel_417", gecode_constraint_rel_417, 4);
YAP_UserCPredicate("gecode_constraint_rel_419", gecode_constraint_rel_419, 4);
YAP_UserCPredicate("gecode_constraint_rel_421", gecode_constraint_rel_421, 4);
YAP_UserCPredicate("gecode_constraint_rel_423", gecode_constraint_rel_423, 4);
YAP_UserCPredicate("gecode_constraint_rel_426", gecode_constraint_rel_426, 4);
YAP_UserCPredicate("gecode_constraint_rel_427", gecode_constraint_rel_427, 4);
YAP_UserCPredicate("gecode_constraint_rel_429", gecode_constraint_rel_429, 4);
YAP_UserCPredicate("gecode_constraint_rel_431", gecode_constraint_rel_431, 4);
YAP_UserCPredicate("gecode_constraint_rel_433", gecode_constraint_rel_433, 4);
YAP_UserCPredicate("gecode_constraint_rel_434", gecode_constraint_rel_434, 4);
YAP_UserCPredicate("gecode_constraint_rel_435", gecode_constraint_rel_435, 4);
YAP_UserCPredicate("gecode_constraint_rel_437", gecode_constraint_rel_437, 4);
YAP_UserCPredicate("gecode_constraint_rel_440", gecode_constraint_rel_440, 4);
YAP_UserCPredicate("gecode_constraint_rel_441", gecode_constraint_rel_441, 4);
YAP_UserCPredicate("gecode_constraint_rel_443", gecode_constraint_rel_443, 4);
YAP_UserCPredicate("gecode_constraint_rel_445", gecode_constraint_rel_445, 4);
YAP_UserCPredicate("gecode_constraint_rel_447", gecode_constraint_rel_447, 4);
YAP_UserCPredicate("gecode_constraint_rel_388", gecode_constraint_rel_388, 5);
YAP_UserCPredicate("gecode_constraint_rel_390", gecode_constraint_rel_390, 5);
YAP_UserCPredicate("gecode_constraint_rel_391", gecode_constraint_rel_391, 5);
YAP_UserCPredicate("gecode_constraint_rel_393", gecode_constraint_rel_393, 5);
YAP_UserCPredicate("gecode_constraint_rel_396", gecode_constraint_rel_396, 5);
YAP_UserCPredicate("gecode_constraint_rel_397", gecode_constraint_rel_397, 5);
YAP_UserCPredicate("gecode_constraint_rel_400", gecode_constraint_rel_400, 5);
YAP_UserCPredicate("gecode_constraint_rel_401", gecode_constraint_rel_401, 5);
YAP_UserCPredicate("gecode_constraint_rel_404", gecode_constraint_rel_404, 5);
YAP_UserCPredicate("gecode_constraint_rel_406", gecode_constraint_rel_406, 5);
YAP_UserCPredicate("gecode_constraint_rel_408", gecode_constraint_rel_408, 5);
YAP_UserCPredicate("gecode_constraint_rel_409", gecode_constraint_rel_409, 5);
YAP_UserCPredicate("gecode_constraint_rel_412", gecode_constraint_rel_412, 5);
YAP_UserCPredicate("gecode_constraint_rel_413", gecode_constraint_rel_413, 5);
YAP_UserCPredicate("gecode_constraint_rel_416", gecode_constraint_rel_416, 5);
YAP_UserCPredicate("gecode_constraint_rel_418", gecode_constraint_rel_418, 5);
YAP_UserCPredicate("gecode_constraint_rel_420", gecode_constraint_rel_420, 5);
YAP_UserCPredicate("gecode_constraint_rel_422", gecode_constraint_rel_422, 5);
YAP_UserCPredicate("gecode_constraint_rel_424", gecode_constraint_rel_424, 5);
YAP_UserCPredicate("gecode_constraint_rel_428", gecode_constraint_rel_428, 5);
YAP_UserCPredicate("gecode_constraint_rel_430", gecode_constraint_rel_430, 5);
YAP_UserCPredicate("gecode_constraint_rel_432", gecode_constraint_rel_432, 5);
YAP_UserCPredicate("gecode_constraint_rel_436", gecode_constraint_rel_436, 5);
YAP_UserCPredicate("gecode_constraint_rel_438", gecode_constraint_rel_438, 5);
YAP_UserCPredicate("gecode_constraint_rel_442", gecode_constraint_rel_442, 5);
YAP_UserCPredicate("gecode_constraint_rel_444", gecode_constraint_rel_444, 5);
YAP_UserCPredicate("gecode_constraint_rel_446", gecode_constraint_rel_446, 5);
YAP_UserCPredicate("gecode_constraint_rel_448", gecode_constraint_rel_448, 5);
YAP_UserCPredicate("gecode_constraint_rel_392", gecode_constraint_rel_392, 6);
YAP_UserCPredicate("gecode_constraint_rel_394", gecode_constraint_rel_394, 6);
YAP_UserCPredicate("gecode_constraint_rel_398", gecode_constraint_rel_398, 6);
YAP_UserCPredicate("gecode_constraint_rel_402", gecode_constraint_rel_402, 6);
YAP_UserCPredicate("gecode_constraint_rel_410", gecode_constraint_rel_410, 6);
YAP_UserCPredicate("gecode_constraint_rel_414", gecode_constraint_rel_414, 6);
YAP_UserCPredicate("gecode_constraint_rel_425", gecode_constraint_rel_425, 3);
YAP_UserCPredicate("gecode_constraint_rel_439", gecode_constraint_rel_439, 3);
YAP_UserCPredicate("gecode_constraint_relax_449", gecode_constraint_relax_449, 5);
YAP_UserCPredicate("gecode_constraint_sequence_450", gecode_constraint_sequence_450, 6);
YAP_UserCPredicate("gecode_constraint_sequence_452", gecode_constraint_sequence_452, 6);
YAP_UserCPredicate("gecode_constraint_sequence_451", gecode_constraint_sequence_451, 7);
YAP_UserCPredicate("gecode_constraint_sequence_453", gecode_constraint_sequence_453, 7);
YAP_UserCPredicate("gecode_constraint_sorted_454", gecode_constraint_sorted_454, 3);
YAP_UserCPredicate("gecode_constraint_sorted_455", gecode_constraint_sorted_455, 4);
YAP_UserCPredicate("gecode_constraint_sorted_456", gecode_constraint_sorted_456, 4);
YAP_UserCPredicate("gecode_constraint_sorted_457", gecode_constraint_sorted_457, 5);
YAP_UserCPredicate("gecode_constraint_sqr_458", gecode_constraint_sqr_458, 3);
YAP_UserCPredicate("gecode_constraint_sqr_459", gecode_constraint_sqr_459, 3);
YAP_UserCPredicate("gecode_constraint_sqr_460", gecode_constraint_sqr_460, 4);
YAP_UserCPredicate("gecode_constraint_sqrt_461", gecode_constraint_sqrt_461, 3);
YAP_UserCPredicate("gecode_constraint_sqrt_462", gecode_constraint_sqrt_462, 3);
YAP_UserCPredicate("gecode_constraint_sqrt_463", gecode_constraint_sqrt_463, 4);
YAP_UserCPredicate("gecode_constraint_unary_464", gecode_constraint_unary_464, 3);
YAP_UserCPredicate("gecode_constraint_unary_465", gecode_constraint_unary_465, 4);
YAP_UserCPredicate("gecode_constraint_unary_466", gecode_constraint_unary_466, 4);
YAP_UserCPredicate("gecode_constraint_unary_468", gecode_constraint_unary_468, 4);
YAP_UserCPredicate("gecode_constraint_unary_472", gecode_constraint_unary_472, 4);
YAP_UserCPredicate("gecode_constraint_unary_467", gecode_constraint_unary_467, 5);
YAP_UserCPredicate("gecode_constraint_unary_469", gecode_constraint_unary_469, 5);
YAP_UserCPredicate("gecode_constraint_unary_470", gecode_constraint_unary_470, 5);
YAP_UserCPredicate("gecode_constraint_unary_473", gecode_constraint_unary_473, 5);
YAP_UserCPredicate("gecode_constraint_unary_474", gecode_constraint_unary_474, 5);
YAP_UserCPredicate("gecode_constraint_unary_471", gecode_constraint_unary_471, 6);
YAP_UserCPredicate("gecode_constraint_unary_475", gecode_constraint_unary_475, 6);
YAP_UserCPredicate("gecode_constraint_unshare_476", gecode_constraint_unshare_476, 2);
YAP_UserCPredicate("gecode_constraint_unshare_478", gecode_constraint_unshare_478, 2);
YAP_UserCPredicate("gecode_constraint_unshare_477", gecode_constraint_unshare_477, 3);
YAP_UserCPredicate("gecode_constraint_unshare_479", gecode_constraint_unshare_479, 3);
YAP_UserCPredicate("gecode_constraint_when_480", gecode_constraint_when_480, 3);
YAP_UserCPredicate("gecode_constraint_when_481", gecode_constraint_when_481, 4);
YAP_UserCPredicate("gecode_constraint_when_482", gecode_constraint_when_482, 4);
YAP_UserCPredicate("gecode_constraint_when_483", gecode_constraint_when_483, 5);

File diff suppressed because it is too large Load Diff

View File

@ -394,13 +394,12 @@ yap_hacks:cut_by(CP) :- '$$cut_by'(CP).
:- style_check([+discontiguous,+multiple,+single_var]).
%
% moved this to init_gc in gc.c to separate the alpha
% moved this to init_gc in sgc.c to separate the alpha
%
% :- yap_flag(gc,on).
% :- yap_flag(gc_trace,verbose).
%
% :- yap_flag(gc_trace,verbose`
:- multifile
prolog:comment_hook/3.

View File

@ -392,33 +392,33 @@ be lost.
'$trace_meta_call'( G, M, CP ) :-
'$trace_query'(G, M, CP, G, EG ),
call(EG).
'$trace_query'(G, M, CP, G, EG ),
call(EG).
%% @pred '$trace_query'( +G, +M, +CP, +Expanded)
%
% debug a complex query
%
'$trace_query'(V, M, CP, _, '$trace'([M|V],CP)) :-
var(V), !.
'$trace_query'(V, M, _CP, _, call(M:V)) :-
var(V), !.
'$trace_query'(!, _, CP, _, '$$cut_by'(CP)) :-
!.
!.
'$trace_query'('$cut_by'(M), _, _, _, '$$cut_by'(M)) :-
!.
!.
'$trace_query'('$$cut_by'(M), _, _, _, '$$cut_by'(M)) :-
!.
!.
'$trace_query'(true, _, _, _, true) :- !.
'$trace_query'(fail, _, _, _, '$trace'(fail)) :- !.
'$trace_query'(M:G, _, CP,S, Expanded) :-
!,
'$yap_strip_module'(M:G, M0, G0),
'$trace_query'(G0, M0, CP,S, Expanded ).
!,
'$yap_strip_module'(M:G, M0, G0),
'$trace_query'(G0, M0, CP,S, Expanded ).
'$trace_query'((A,B), M, CP, S, (EA,EB)) :- !,
'$trace_query'(A, M, CP, S, EA),
'$trace_query'(B, M, CP, S, EB).
'$trace_query'(A, M, CP, S, EA),
'$trace_query'(B, M, CP, S, EB).
'$trace_query'((A->B), M, CP, S, (EA->EB)) :- !,
'$trace_query'(A, M, CP, S, EA),
'$trace_query'(B, M, CP, S, EB).
'$trace_query'(A, M, CP, S, EA),
'$trace_query'(B, M, CP, S, EB).
'$trace_query'((A;B), M, CP, S, (EA;EB)) :- !,
'$trace_query'(A, M, CP, S, EA),
'$trace_query'(B, M, CP, S, EB).
@ -431,10 +431,10 @@ be lost.
% spy a literal
'$id_goal'(L),
catch(
'$trace_goal'(G, M, L, H),
E,
'$re_trace_query'(E, G, M, L, H)
))).
'$trace_goal'(G, M, L, H),
E,
'$TraceError'(E, G, M, L, H)
))).
%% @pred $trace_goal( +Goal, +Module, +CallId, +CallInfo)
%%
@ -446,7 +446,7 @@ be lost.
;
'__NB_getval__'('$debug_status',state(zip,Border,Spy), fail),
Border < GoalNumber,
( Spy == ignore ; '$pred_being_spied'(G, M) )
( Spy == ignore ; \+ '$pred_being_spied'(G, M) )
),
%writeln(go:G:M),
!,
@ -476,25 +476,25 @@ be lost.
).
% system_
'$trace_goal'(G, M, GoalNumber, H) :-
(
'$is_opaque_predicate'(G, M)
;
'strip_module'(M:G, prolog, _NG)
),
!,
gated_call(
'$enter_trace'(GoalNumber, G, M, H),
'$execute_nonstop'(G,M),
Port,
'$trace_port'(Port, GoalNumber, G, M, true, H)
).
(
'$is_opaque_predicate'(G, M)
;
'strip_module'(M:G, prolog, _NG)
),
!,
gated_call(
'$enter_trace'(GoalNumber, G, M, H),
'$execute_nonstop'(G,M),
Port,
'$trace_port'(Port, GoalNumber, G, M, true, H)
).
'$trace_goal'(G, M, GoalNumber, H) :-
gated_call(
'$enter_trace'(GoalNumber, G, M, H),
'$debug'( GoalNumber, G, M, H),
Port,
'$trace_port'(Port, GoalNumber, G, M, true, H)
).
gated_call(
'$enter_trace'(GoalNumber, G, M, H),
'$debug'( GoalNumber, G, M, H),
Port,
'$trace_port'(Port, GoalNumber, G, M, true, H)
).
/**
@ -547,8 +547,10 @@ be lost.
* @parameter _Info_ describes the goal
*
*/
'$debug'(_, G, M, _H) :-
'__NB_getval__'('$debug_status',state(zip,_Border,_), fail),
'__NB_getval__'('$debug_status',state(zip,_Border,Spy), fail),
( Spy == stop -> \+ '$pred_being_spied'(G,M) ; true ),
!,
'$execute_nonstop'( G, M ).
'$debug'(GoalNumber, G, M, Info) :-
@ -574,74 +576,50 @@ be lost.
*/
'$trace_go'(GoalNumber, G, M, Info) :-
X=marker(_,M,G),
'$$save_by'(CP),
clause(M:G, Cl, _),
'$retry_clause'(GoalNumber, G, M, Info, X),
'$trace_query'(Cl, M, CP, Cl, ECl),
'$execute0'(ECl,M).
'$$save_by'(CP),
clause(M:G, Cl, _),
'$retry_clause'(GoalNumber, G, M, Info, X),
'$trace_query'(Cl, M, CP, Cl, ECl),
'$execute0'(ECl,M).
'$creep_step'(GoalNumber, G, M, Info) :-
X=marker(_,M,G),
'$$save_by'(CP),
'$static_clause'(G,M,_,Ref),
'$retry_clause'(GoalNumber, G, M, Info, X),
'$creep',
'$execute_clause'(G,M,Ref,CP).
X=marker(_,M,G),
'$$save_by'(CP),
'$static_clause'(G,M,_,Ref),
'$retry_clause'(GoalNumber, G, M, Info, X),
'$creep',
'$execute_clause'(G,M,Ref,CP).
'$retry_clause'(_GoalNumber, _G, _M, _Info, MarkerV) :-
arg(1, MarkerV, V),
var(V),
!,
nb_setarg(1,MarkerV, visited).
arg(1, MarkerV, V),
var(V),
!,
nb_setarg(1,MarkerV, visited).
'$retry_clause'(GoalNumber, G, Module, Info, _X) :-
'$trace_port_'(redo, GoalNumber, G, Module, Info).
%% @pred '$re_trace_query'( Exception, +Goal, +Mod, +GoalID )
%
% debugger code for exceptions. Recognised cases are:
% - abort always forwarded
% - redo resets the goal
% - fail gives up on the goal.
'$re_trace_query'(abort, _G, _Module, _GoalNumber, _H) :-
!,
abort.
'$re_trace_query'(forward(fail,G0), _G, __Module, GoalNumber, _H) :-
GoalNumber =< G0,
!,
fail.
'$re_trace_query'(forward(redo,G0), G, M, GoalNumber, H) :-
GoalNumber > G0,
!,
catch(
'$trace_goal'(G, M, GoalNumber, H),
E,
'$re_trace_query'(E, G,M, GoalNumber, H)
).
'$re_trace_query'(forward(C,G0), _G, _Module, _GoalNumber, _H) :-
throw(forward(C,G0)).
'$trace_port_'(redo, GoalNumber, G, Module, Info).
'$trace_port'(Port, GoalNumber, G, Module, _CalledFromDebugger, Info) :-
'$stop_creeping'(_) ,
current_prolog_flag(debug, true),
'__NB_getval__'('$debug_status',state(Skip,Border,_), fail),
( Skip == creep -> true; '$id_goal'(GoalNumber) ; GoalNumber =< Border),
!,
'__NB_setval__'('$debug_status', state(creep, 0, stop)),
'$trace_port_'(Port, GoalNumber, G, Module, Info).
'$stop_creeping'(_) ,
current_prolog_flag(debug, true),
'__NB_getval__'('$debug_status',state(Skip,Border,_), fail),
( Skip == creep -> true; '$id_goal'(GoalNumber) ; GoalNumber =< Border),
!,
'__NB_setval__'('$debug_status', state(creep, 0, stop)),
'$trace_port_'(Port, GoalNumber, G, Module, Info).
'$trace_port'(_Port, _GoalNumber, _G, _Module, _CalledFromDebugger, _Info).
'$trace_port_'(call, GoalNumber, G, Module, Info) :-
'$port'(call,G,Module,GoalNumber,deterministic, Info).
'$port'(call,G,Module,GoalNumber,deterministic, Info).
'$trace_port_'(exit, GoalNumber, G, Module, Info) :-
nb_setarg(6, Info, true),
'$port'(exit,G,Module,GoalNumber,deterministic, Info).
nb_setarg(6, Info, true),
'$port'(exit,G,Module,GoalNumber,deterministic, Info).
'$trace_port_'(answer, GoalNumber, G, Module, Info) :-
'$port'(exit,G,Module,GoalNumber,nondeterministic, Info).
'$port'(exit,G,Module,GoalNumber,nondeterministic, Info).
'$trace_port_'(redo, GoalNumber, G, Module, Info) :-
'$port'(redo,G,Module,GoalNumber,nondeterministic, Info), /* inform user_error */
'$stop_creeping'(_ ).
'$port'(redo,G,Module,GoalNumber,nondeterministic, Info), /* inform user_error */
'$stop_creeping'(_ ).
'$trace_port_'(fail, GoalNumber, G, Module, Info) :-
'$port'(fail,G,Module,GoalNumber,deterministic, Info). /* inform user_error */
'$port'(fail,G,Module,GoalNumber,deterministic, Info). /* inform user_error */
'$trace_port_'(! ,_GoalNumber,_G,_Module,_Imfo) :- /* inform user_error */
!.
'$trace_port_'(exception(E), GoalNumber, G, Module, Info) :-
@ -651,25 +629,47 @@ be lost.
%%% - abort: forward throw while the call is newer than goal
%% @pred '$re_trace_query'( Exception, +Goal, +Mod, +GoalID )
%
% debugger code for exceptions. Recognised cases are:
% - abort always forwarded
% - redo resets the goal
% - fail gives up on the goal.
'$TraceError'(abort, _G, _Module, _GoalNumber, _H) :-
!,
abort.
'$TraceError'(error(event(fail),G0), _G, __Module, GoalNumber, _H) :-
GoalNumber =< G0,
!,
fail.
'$TraceError'(error(event(redo),G0), G, M, GoalNumber, H) :-
GoalNumber =< G0,
!,
catch(
'$trace_goal'(G, M, GoalNumber, H),
E,
'$TraceError'(E, G, M, GoalNumber, H)
).
'$TraceError'( error(Id,Info), _, _, _, _) :-
!,
throw( error(Id, Info) ).
%%% - forward through the debugger
'$TraceError'(forward('$wrapper',Event), _, _, _, _) :-
!,
throw(Event).
!,
throw(Event).
%%% - anything else, leave to the user and restore the catch
'$TraceError'(Event, GoalNumber, G, Module, CalledFromDebugger) :-
'$debug_error'(Event),
'$system_catch'(
('$port'(exception(Event),G,Module,GoalNumber,_,creep),fail),
Module,
Error,
'$TraceError'(Error, GoalNumber, G, Module, CalledFromDebugger)
).
'$debug_error'(Event),
'$system_catch'(
('$port'(exception(Event),G,Module,GoalNumber,_,creep),fail),
Module,
Error,
'$TraceError'(Error, GoalNumber, G, Module, CalledFromDebugger)
).
'$debug_error'(Event) :-
'$Error'(Event), fail.
'$Error'(Event), fail.
'$debug_error'(_).
@ -789,9 +789,10 @@ be lost.
'__NB_setval__'('$debug_status',status(creep,0,stop)).
'$action'(e,_,_,_,_,_) :- !, % 'e exit
halt.
'$action'(f,_,_,_,_,_) :- !, % 'f fail
'$scan_number'( GoalId), %'f
throw(forward(fail,GoalId)).
'$action'(f,_,CallNumber,_,_,_) :- !, % 'f fail
'$scan_number'( ScanNumber),
( ScanNumber == 0 -> Goal = CallNumber ; Goal = ScanNumber ),
throw(error(event(fail),Goal)).
'$action'(h,_,_,_,_,_) :- !, % 'h help
'$action_help',
skip( debugger_input, 10),
@ -834,10 +835,11 @@ be lost.
% tell debugger never to stop.
'__NB_setval__'('$debug_status', state(zip, 0, ignore)),
nodebug.
'$action'(r,_,_,_,_,_) :- !, % 'r retry
'$action'(r,_,CallNumber,_,_,_) :- !, % 'r retry
'$scan_number'(ScanNumber), % '
% set_prolog_flag(debug, true),
throw(forward(redo,ScanNumber)).
% set_prolog_flag(debug, true),
( ScanNumber == 0 -> Goal = CallNumber ; Goal = ScanNumber ),
throw(error(event(redo),Goal)).
'$action'(s,P,CallNumber,_,_,_) :- !, % 's skip
skip( debugger_input, 10), % '
( (P=call; P=redo) ->
@ -869,7 +871,7 @@ be lost.
'$show_ancestors'(HowMany),
fail.
'$action'('T',exception(G),_,_,_,_) :- !, % 'T throw
throw( forward('$wrapper',G)).
throw( G ).
'$action'(C,_,_,_,_,_) :-
skip( debugger_input, 10),
'$ilgl'(C),

View File

@ -284,10 +284,10 @@ location( error(_,Info), Level, LC ) -->
query_exception(prologStack, Desc, St)
},
!,
display_consulting( File, Level, Info, LC ),
display_consulting( File, Level, Info, LC ),
{simplify_pred(M:Na/Ar,FF)},
[ '~a:~d:0 ~a while executing ~q:'-[File, FilePos,Level,FF] ],
[ 'Execution stack is: ~a' - [St]].
[ '~a:~d:0 ~a while executing ~q:'-[File, FilePos,Level,FF] ],
( { Stack == [] } -> [] ; [ nl, '~s'- [] ]).
location( error(_,Info), Level, LC ) -->
{ '$error_descriptor'(Info, Desc) },
{