Связанные: CNF simplification (на самом деле, я думаю, что податель этого вопроса мог бы быть после того, что я хочу здесь)Упрощая формулу CNF, сохраняя при этом всех решениях WRT некоторых переменных
ряд инструментов существует для упрощения (или " preprocessing "до решения). Формат DIMACS в формате CNF, и большинство решателей SAT включают некоторые. Однако все, что мне известно, упрощает тривиально выполнимую формулу в тривиально-выполнимую CNF с нулевой или одной переменной, т. Е. Они только пытаются сохранить выполнимость формулы. Я пробовал, по крайней мере, режим предварительной обработки SatELite и cryptominisat.
Однако для построения CNF большой проблемы мне кажется, что было бы очень полезно упростить четко определенное подмножество задачи за раз, которое затем может повторяться много раз в конечной CNF с дополнительными ограничениями между некоторыми переменными в этих подформулах.
Таким образом, существуют ли какие-либо инструменты или могут использоваться обычные решатели SAT (или другие решатели, такие как Z3, которые я использую для создания CNF, которые я хотел бы свести к минимуму), как-то использовать с некоторой утонченностью, чтобы упростить формулу CNF сохраняя при этом все решения по заданному набору переменных?
Спасибо за указатель. Было очень сложно заставить его работать. Существует параметр -whitelist для указания переменных do-not-touch, а формат для этого не документирован (для каждого файла требуется одна строка, одна переменная в строке или один диапазон в строке, как в 1..10). Даже тогда, это ужасно чувствительно к упорядочению параметров командной строки, тихо проваливается интересными способами, если порядок неправильный и обрезает предоставленный входной файл .cnf в процессе. Какая часть программного обеспечения: D –