Как преобразовать логическое выражение в файл cnf?

Мне нужно использовать Sat Solver для проверки выполнимости логических выражений..

У меня сложное логическое выражение, как это

альтернативный текст

Есть ли автоматический конвертер файлов CNF, так что я могу дать его прямо в Sat Solver?

Я прочитал файл формата cnf.. но как выразить это выражение в файле.cnf? я запутался, когда внутри парантеза есть соединение и как выразить -> и <->? Помогите мне, пожалуйста

2 ответа

Решение

Есть несколько решений.

Limboole - это инструмент с открытым исходным кодом, который, как мне кажется, включает в себя отдельный конвертер "логика высказываний в CNF".

В более общем смысле вы также можете использовать инструмент, который изначально поддерживает логику высказываний; некоторые примеры включают Z3, CVC3 и Yices.

SBSAT - это основанный на состоянии SAT-решатель, который может принимать различные входные форматы. Вы можете взять простое выражение и передать его в SBSAT для преобразования в CNF. Руководство, раздел 4.10, описывает, как это сделать.

Другие вопросы по тегам