public FOLNode copy() { List<Term> copyTerms = new List<Term>(); foreach (Term t in terms) { copyTerms.Add((Term)t.copy()); } return new Predicate(predicateName, copyTerms); }