public Object visitFunction(Function function, Object arg)
{
if (!replaced)
{
if (toReplace.Equals(function))
{
replaced = true;
return replaceWith;
}
}
List<Term> newTerms = new List<Term>();
foreach (Term t in function.getTerms())
{
Term subsTerm = (Term)t.accept(this, arg);
newTerms.Add(subsTerm);
}
return new Function(function.getFunctionName(), newTerms);
}