Как преобразовать логическое выражение в файл cnf?
Мне нужно использовать Sat Solver для проверки выполнимости логических выражений..
У меня сложное логическое выражение, как это
Есть ли автоматический конвертер файлов CNF, так что я могу дать его прямо в Sat Solver?
Я прочитал файл формата cnf.. но как выразить это выражение в файле.cnf? я запутался, когда внутри парантеза есть соединение и как выразить -> и <->? Помогите мне, пожалуйста
2 ответа
Есть несколько решений.
Limboole - это инструмент с открытым исходным кодом, который, как мне кажется, включает в себя отдельный конвертер "логика высказываний в CNF".
В более общем смысле вы также можете использовать инструмент, который изначально поддерживает логику высказываний; некоторые примеры включают Z3, CVC3 и Yices.
SBSAT - это основанный на состоянии SAT-решатель, который может принимать различные входные форматы. Вы можете взять простое выражение и передать его в SBSAT для преобразования в CNF. Руководство, раздел 4.10, описывает, как это сделать.