ATbool SG_IsMarked(ATerm t) { if (ATindexedSetGetIndex(marks, t) == -1) { return ATfalse; } return ATtrue; }
int HTmember (HTable *table, ATerm a, long *pn) { long index; index=ATindexedSetGetIndex(table->terms,a); if(index>=0){ *pn=index; return 1; } else { return 0; } }
static ATbool occurs_rec(ATerm var, ATerm t, ATbool *nonempty) { /* invariants: - var doesn't occur in terms in No_occurs - nonempty iff No_occurs is not empty */ ATbool b; if (var==t) return ATtrue; else if (ATisVariable(t)) return ATfalse; else if (*nonempty && ATindexedSetGetIndex(No_occurs,t)>=0) return ATfalse; else { int i; for (i=ATgetArity(ATgetSymbol(t))-1;i>=0;i--) if (occurs_rec(var, ATgetArgument(t,i),nonempty)) return ATtrue; } *nonempty = ATtrue; ATindexedSetPut(No_occurs,t,&b); return ATfalse; }