Ищете хорошую библиотеку булевой алгебры - PullRequest
0 голосов
/ 28 сентября 2011

Я пишу инструмент, который имеет дело с некоторой булевой алгеброй. Это в основном инструмент для создания конечного автомата на основе пользовательского файла, который содержит имена состояний, условия и информацию о переходах. Метод, с помощью которого происходят переходы состояний, заключается в основном в просмотре логической таблицы логики. например переход из State1 в State2, если:

(A & B) | (C & ~D) | (E)

Я все это реализовал, но теперь мне нужно добавить возможность делать такие забавные вещи, как инвертирование всего шебанга:

~((A & B) | (C & ~D) | (E)) = (via DeMorgan) (~A & ~C & ~E) | (~A & D & ~E) | (~B & ~C & ~E) | (~B & D & ~E)

Результат должен быть в Разъединительной нормальной форме .

По сути, я не хочу писать это сам, и я надеюсь, что где-то есть библиотека, которая знает, как справляться с подобными вещами. Я сталкивался с SymPy, но я не уверен, есть ли модуль булевой алгебры.

Мое приложение написано на C (вероятно, не должно быть), но все поможет.

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Вместо того, чтобы включать код, я нашел несколько отличных приложений, которые бесплатны для любого использования (через Университет Калифорнии). Инструмент под названием Logic Friday имеет приятный интерфейс для нескольких других приложений: misii и espresso (включены в установку), которые выполняют символическую булеву алгебру.

Не существует великолепного интерфейса командной строки, но вы можете передавать файлы для выполнения работы. Это выполняет минимизацию, которую я искал.

0 голосов
/ 18 сентября 2015

Вы можете попробовать этот проект с открытым исходным кодом, хотя это не библиотека, вы можете просто скопировать класс булевой алгебры , чтобы добавить в ваш проект

...