Введение в проверку логики первого порядка

9

Я пытаюсь научить себя различным подходам к проверке программного обеспечения. Я прочитал несколько статей. Насколько я узнал, логика высказываний с темпоральным обычно использует проверку моделей с помощью решателей SAT (в текущих - реактивных системах), но как насчет логики первого порядка с темпоральным? Использует ли он доказательство теорем? Или он также может использовать SAT?

Любые указатели на книги или статьи для начинающих в этом вопросе очень ценятся.

Фелипе Н.
источник
2
Прежде всего, добро пожаловать в CS: SE. Хотя я не эксперт в этом, вы, кажется, ухватываете сразу несколько тем, оставляя много дыр. Не беспокойся; Я делаю это все время. Взгляните на Проверка программного обеспечения, затем Формальная проверка, затем Проверка модели и Формальная проверка программного обеспечения: Проверка модели и доказательство теорем
Гай Кодер

Ответы:

9

Логика первого порядка неразрешима, поэтому решение SAT не очень помогает. Тем не менее, существуют методы для ограниченной проверки моделей формул первого порядка. Это означает, что при попытке определить, является ли формула истинной или ложной, можно учитывать только фиксированное количество объектов. Понятно, что это не завершено, но если встречный пример найден, то это действительно контрпример.

Инструмент Alloy - это один инструмент, который позволяет описывать модели в логике первого порядка (хотя поверхностный синтаксис основан на реляционных моделях) и использует ограниченную проверку моделей для поиска решений. SAT решатель используется под капотом. Одно расширение сплава позволяет модели с временным характером, хотя технически это не поддерживает временную логику.

Если вы хотите продолжить изучение, например, проверки правильности программы, вы можете взглянуть на инструменты проверки программы. Как правило, они основаны на логике Хоара (для рассуждений о предварительных и постусловиях), возможно, расширены с помощью логики разделения (для рассуждений о кучах). Эти логики, как правило, неразрешимы, поэтому требуется определенное взаимодействие между человеком и средством проверки. Некоторые примеры инструментов:

Дэйв Кларк
источник
10

После прочтения вашего вопроса единственный способ, которым я мог видеть и обладал достаточными знаниями, чтобы связать темы, состоял в том, чтобы дать набор статей высокого уровня, которые детализируются от проверки программного обеспечения до попытки объединить проверку модели и доказательство теорем. Надеюсь, мой комментарий сделал это:

Посмотрите на Проверка программного обеспечения, затем Формальная проверка, затем Проверка модели и Формальная проверка программного обеспечения: Проверка модели и доказательство теорем.

Дейв дал хороший ответ, и я не могу отдать должное первой части вопроса гораздо больше, чем Дейв, поскольку я тоже новичок в этом.

Поскольку это ваш первый вопрос на сайте SE , причина, по которой я дал не ответ, а комментарий, заключается в том, что здесь ответ не может быть просто набором ссылок, а должен давать письменный ответ и использовать ссылки в поддержку ответа; таким образом, комментарий вместо ответа.

Что касается:

Любые указатели на книги или статьи для начинающих в этом вопросе очень ценятся.

Книги, которые я бы предложил и использовал:

В настоящее время я не могу более подробно остановиться на доказательстве теорем, потому что я все еще изучаю плюсы и минусы каждого, но те, на которых я сосредотачиваюсь,

  • HOL Light из-за книги Джона Харрисона.
  • Coq, потому что он основан на исчислении конструкций
  • Изабель, потому что она основана на объединении высшего порядка.

    Эти помощники по доказательству также обычно имеют книги, являются текущими, популярными, с открытым исходным кодом, поддерживаются и имеют активные сообщества поддержки.

Примечание: я использовал worldcat.org для ссылок на книги, но вы можете просмотреть их, используя функцию поиска Amazon.

Гай Кодер
источник
Чтобы избежать множества изменений в ответе, я добавлю добавленную информацию в виде комментариев, а затем в будущем сверну их в ответ. За попытку разобраться во многих сходствах и различиях между ассистентами. Google для Freek Wiedijk; Я нахожу его документы весьма полезными.
Гай Кодер
Большое спасибо за ваш подробный и подробный ответ. Для добавления ваших комментариев к книгам и предоставления ссылки на бесплатную книгу. Опять же, я не могу отблагодарить вас достаточно :-)
FELIPE N.