private static int standardizeApart(List<Variable> variables, Object expr,
int saIdx)
{
Dictionary<String, int> indexicals = new Dictionary<String, int>();
foreach (Variable v in variables)
{
if (!indexicals.ContainsKey(v.getIndexedValue()))
{
indexicals.Add(v.getIndexedValue(), saIdx++);
}
}
foreach (Variable v in variables)
{
int i = indexicals[v.getIndexedValue()];
if (null == i)
{
throw new ApplicationException("ERROR: duplicate var=" + v
+ ", expr=" + expr);
}
else
{
v.setIndexical(i);
}
}
return saIdx;
}