protected internal override bool Satisfy(Trail trail) { for (int i = 0; i < v.Length; i++) { Domain d = v[i].Domain; if (d.Size() != 1) { continue; } Object elem = d.Element(); for (int j = 0; j < v.Length; j++) { if (i == j) { continue; } Domain d1 = v[j].Domain.Delete(elem); if (d1.Empty) { return(false); } if (trail != null) { v[j].UpdateDomain(d1, trail); } } } return(true); }