public Object visitFunction(Function function, Object arg)
{
List<Term> terms = function.getTerms();
List<Term> newTerms = new List<Term>();
for (int i = 0; i < terms.Count; i++)
{
Term t = terms[i];
Term subsTerm = (Term)t.accept(this, arg);
newTerms.Add(subsTerm);
}
return new Function(function.getFunctionName(), newTerms);
}