public override Object visitVariable(Variable variable, Object arg)
{
Dictionary<Variable, Term> substitution = (Dictionary<Variable, Term>)arg;
if (substitution.ContainsKey(variable))
{
return substitution[variable].copy();
}
return variable.copy();
}