стандартные аксиомы L
…которые, кстати, всё-таки бывают разными в зависимости от учебника. Например, одни авторы стремятся к минимализму и делают формулы со связками
сокращениями формул со связками только
, другие желают, чтобы (производные) правила введения и удаления связок получались из аксиом в пару шагов, и потому аксиом много и т. п.. Это может в частности немного менять, насколько простым может быть алгоритм.
Вообще же можно сделать довольно грубо, но действенно. Пусть в формулу
входят переменные
. Сначала выводим
, этот вывод будет использоваться как клей, которым алгоритм будет склеивать
выводов формул
(по всем вариантам расстановки
). Сами эти выводы можно получить, используя теорему о дедукции и всевозможные «правила таблицы истинности»
, где
— разные двухместные связки (для отрицания не понадобится), собирая с помощью них формулу из каждого набора гипотез
. Тут можно найти оптимизации, но чем проще алгоритм, тем ведь быстрее его корректная реализация?
Схема выше хороша ещё и тем, что она как раз не зависит от конкретного вида набора связок и аксиом — от него зависит то, какие выводы породит теорема о дедукции и какие выводы мы сделаем для «правил таблицы истинности» и
, а вот сборка будет одна и та же. Ещё этот алгоритм не сработает для не-теоремы (потому что в построении одного из выводов соберётся не
, а
), но никогда не построит последовательность формул, не являющуюся выводом (ну, если понят и реализован правильно).