Давайте точно сформулируем задачу.
Пусть
-- некоторая сигнатура.
-- некоторая конечна алгебраическая система этой сигнатуры.
Пусть
-- формула сигнатуры
от свободных переменных
.
Необходимо придумать алгоритм, который за конечное число шагов установит,
является ли формула
выполнимой или нет.
Формула называется выполнимой, если найдутся такие знаения
из носителя алгебраической системы, что
является истинной.
Как предлагается построить такой алгоритм? Формула определяется индуктивным определением. Им и воспользуется.
Так как алгебраическая система конечна, то выполнимость атомарных формул
устанавливается полным перебором всех наборов переменных. Правильно?
Ну то есть пусть
, запомним все наборы
на которых эта формула истинна.
Далее, рассмотрим конъюнкцию, дизъюнкцию и отрицание.
Пусть
. Мы уже умеем находить множества выполнимости для слагаемых, тогда множество выполнимости формулы
-- это пересечение этих двух множеств.
Остальные случаи разберите самостоятельно.
Пусть теперь формула
имеет вид
.
Здесь во множество выполнимости войдут, только те наборы
, что во множестве истинности
найдётся хотя бы один набор
, понятно, что это можно установить за конечное число шагов.
Что делать с квантором всеобщности придумайте сами.
Ну а формула тоже когда-нибудь закончится, так что алгоритм за конечное число шагов найдёт множество выполнимости, достаточно для ответа проверить его на пустоту.
Правда ещё есть проблема, если формула имела вид типа
. То есть без свободных переменных, но введением набора нулевой длины, она решается.
В общем идея такая, введите обознаение для множества выполнимости формулы только.
И главное найдите в этом алгоритме все случаи, где существенно используется конечность носителя.
Не отрицаю, что возможно проще или как-то по другому. Но рассуждения использующие индуктивное определение формулы встречаются настолько часто, так что подобные рассуждения нужно проводить не задумываясь.