public override int GetHashCode() { if (0 == hashCode) { hashCode = 17; hashCode = 37 * hashCode + functionName.GetHashCode(); foreach (Term t in terms) { hashCode = 37 * hashCode + t.GetHashCode(); } } return hashCode; }