Таблица истинности такая:
A B C ?
1 1 1 1
1 1 0 0
1 0 1 0
1 0 0 0
0 1 1 0
0 1 0 0
0 0 1 0
0 0 0 1
Истина, когда либо все аргументы - истины, либо когда все аргументы - лжи.
Где, A, B, C - предикаты - выражения, принимающие значения true или false.
Нужна формула для таблицы выше, в которой A, B, C присутствуют
по одному разу.
Желательно, чтобы формула была масштабируемой до 4х и более значений.
Чем проще будет формула, тем лучше.
Язык: postgresql (версии 12), создавать функции нельзя, можно использовать стандартные функции и расширения, которые идут вместе с погресом и добавляются с помощью CREATE EXTENSION.
Вот примеры решения:
(SELECT bool_and(a) = bool_or(a) FROM unnest(ARRAY[A, B, C]) a(a))
A::int + B::int + C::int IN (0, 3)
Может есть идеи по-проще, получше?