//Caller is responsible for deleting returned pointer Predicate* Domain::createPredicate(const int& predId, const bool& includeEqualPreds) const { const PredicateTemplate* pt = getPredicateTemplate(predId); if (!includeEqualPreds && pt->isEqualPredicateTemplate()) return NULL; Predicate* pred = new Predicate(pt); pred->setSense(true); for (int j = 0; j < pt->getNumTerms(); j++) pred->appendTerm(new Term(-(j+1), (void*)pred, true)); return pred; }