Я хотел бы доказать правильность и завершение функции / алгоритма, который преобразует любую логическую формулу первого порядка в ее Нормальную форму отрицания (NNF).
Однако я даже не знаю, с чего начать. Кто-нибудь может мне помочь?
Я пытался использовать пакет FOL, но потом понял, что не могу импортировать Main, чтобы использовать команду «fun» одновременно. Затем я начал с Main и доказал несколько правил эквивалентности, используя blast.
Теперь мне нужно создать функцию, которая преобразует формулу первого порядка в ее нормальную форму отрицания. Я начал с этого:
весело toNNF :: "prop ==> prop", где ...
но, похоже, это не работает должным образом (Изабель дает мне сообщение: «Ошибка объединения типов»). Здесь есть свет?