private IgnoreCaseRelation CreateIgnoreCaseRelationInvariant() { EnsureDefault(); // Compute the invariant table based off of default. // In the default (en-US) culture: Turkish_I_withDot = i = I // In the invariant culture: i = I, while Turkish_I_withDot is case-insensitive BDD tr_I_withdot_BDD = _solver.CharConstraint(Turkish_I_WithDot); // Since Turkish_I_withDot is case-insensitive in invariant culture, remove it from the default (en-US culture) table. BDD inv_table = _solver.And(_relationDefault.Instance, _solver.Not(tr_I_withdot_BDD)); // Next, remove Turkish_I_withDot from the RHS of the relation. // This also effectively removes Turkish_I_withDot from the equivalence sets of 'i' and 'I'. BDD instance = _solver.And(inv_table, _solver.Not(_solver.ShiftLeft(tr_I_withdot_BDD, 16))); // Remove Turkish_I_withDot from the domain of casesensitive characters in the default case BDD instanceDomain = _solver.And(instance, _solver.Not(tr_I_withdot_BDD)); _relationInvariant = new IgnoreCaseRelation(instance, instanceDomain); return(_relationInvariant); }