public CSP(List<Variable> vars)
{
variables = new List<Variable>(vars.Count);
domains = new List<Domain>(vars.Count);
constraints = new List<Constraint>();
varIndexHash = new Dictionary<Variable, int>();
cnet = new Dictionary<Variable, List<Constraint>>();
Domain emptyDomain = new Domain(new List<Object>(0));
int index = 0;
foreach (Variable var in vars)
{
variables.Add(var);
domains.Add(emptyDomain);
varIndexHash.put(var, index++);
cnet.put(var, new List<Constraint>());
}
}