Это существенно усложняет задачу - Вам надо проверять однозначность классификации лишь на (под)множестве "реальных значений".
Вот нашли Вы значение, на котором две функции дают 1, но если это значение не реализуется в реальном мире в принципе, то это не делает классификацию "неправильной".
Вот это "в принципе" может иметь два совершенно разных источника.
1. Распиливаем категорию на набор булевых индикаторов. Например "цвет" в набор "черный да\нет", "белый да\нет".....
"Цвет" не может быть одновременно и "белым", и "черным" по построению. И требовать отрицаний в условиях "цвет белый, но не черный, не зеленый, не красный, не серобуромалиновый ...." - избыточно, конечно. И такие случаи (с "распиливанием категорий") требуют отдельной обработки, видимо.
2. Несовместимые в реальном мире комбинации. Например "тип фрукта = хурма" и "цвет = фиолетовый".
Такое невозможно обработать\предусмотреть без дополнительных знаний о реальном мире. И если классификация на таких наборах даёт неоднозначный ответ - тем хуже для классификации.