Оглавление
Теории выполнимости по модулю
-
Основы SMT
- SMT (Satisfiability Modulo Theories) – это метод решения задач, основанный на теории выполнимости.
- SMT-решатели используют логические методы для проверки выполнимости формул.
-
Применение SMT
- SMT используется в различных областях, включая верификацию программного обеспечения и анализ безопасности.
- SMT-решатели применяются в разработке программного обеспечения, тестировании и анализе.
-
Примеры SMT-решателей
- Z3 – популярный SMT-решатель, поддерживающий множество языков программирования.
- Boogie – промежуточный язык верификации, использующий Z3 для проверки императивных программ.
- F * – язык с зависимыми типами, использующий Z3 для доказательства теорем.
- Viper – инфраструктура верификации, кодирующая условия верификации в Z3.
- sbv – библиотека для проверки программ на Haskell с поддержкой различных SMT-решателей.
-
Дополнительные инструменты и приложения
- SAGE, KLEE, S2E и Triton – инструменты для символьного выполнения программ.
- Coq и Isabelle/HOL – помощники по проверке, интегрированные с SMT-решателями.
-
Библиография
- Статья основана на работе Лонкарика, Кальвина и др. “Практическая основа для объяснения ошибок при выводе типа”.
- Ссылки на SMT-LIB и SMT-COMP для получения дополнительной информации.