The constraints are chosen based on the two criteria: (1) adding them to the base constraints (those added in advance) would result in an extremely large program, and (2) it must be efficient to detect whether the constraint is violated in y.
if we want a constraint which forbids duplicate subjects we need to provide additional labels to fall back on.