Любая реализация для конструктора логических выражений

Скажем, мне нужно создать конструктор логических выражений, который состоит из предикатов (любая функция, возвращающая true / false).

Я хочу создать цепочку, подобную цепочке:

$chainA = new Chain(predicateA1());
$chainA->add(AND, predicateX());
$chainB = new Chain(predicateB1());
$chainB->add(AND, predicateX());

$chain = new Chain($chainA);
$chain->add(OR, $chainB);

Итак, я получаю такое выражение (A1 и X) или (B1 и X), все это довольно просто, но мне нужна одна особенность — сделать некоторое логическое преобразование в конъюнктивную / дизъюнктивную форму, например:

(А1 и Х) или (В1 и Х) -> (А1 или В1) и Х.

Я понятия не имею, как реализовать это.

Есть ли шаблоны или библиотеки в php или java, решающие эту проблему?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …