Z3, современный решатель модулей удовлетворенности (SMT), разработанный Microsoft Research, поддерживает широкий спектр теорий, которые имеют решающее значение для проверки и анализа программного обеспечения. Вот несколько примеров поддержки теорий Z3:
- Арифметика: это включает как целое число, так и реальное арифметику, позволяя Z3 решать уравнения с участием чисел.
-Викторы битов фиксированного размера: полезны для моделирования цифровых цепей и двоичных данных, это векторы битов с фиксированной длиной.
- Расширенные массивы: массивы рассматриваются как функции от индексов до значений, что позволяет Z3 рассуждать о структурах данных.
- Дататипы: Z3 поддерживает рассуждения о сложных структурах данных, таких как списки, деревья и записи.
- Неинтерпретированные функции: это функции, поведение которых не определено, полезно для абстрагирования деталей реализации.
- Квантификаторы: Z3 может обрабатывать как экзистенциальные, так и универсальные квантификаторы, позволяя ему рассуждать о свойствах, которые применяются ко всем или некоторым элементам домена.
Кроме того, Z3 может быть расширен или использоваться в сочетании с другими теориями, такими как кардинальность и неравенство псевдо-булевого, которые полезны для комбинаторных задач. Он также поддерживает кодирование и аксиоматизацию пользовательских теорий, что делает их универсальными для различных приложений в проверке программного обеспечения и формальных методах [3] [4] [9] [10].
Цитаты:[1] https://theory.stanford.edu/~nikolaj/programmingz3.html
[2] https://specs.openstack.org/openstack/congresspecs/specs/rocky/alternative-engine-z3.html
[3] https://en.wikipedia.org/wiki/z3_theorem_prover
[4] https://ceur-ws.org/vol-418/paper10.pdf
[5] https://jfmc.github.io/z3-play/
[6] https://www21.in.tum.de/~boehmes/proofRec.pdf
[7] https://microsoft.github.io/z3guide/docs/logic/intro/
[8] https://stackoverflow.com/questions/73789804/theory-of-rays-in-z3-1-model-is-difficult-to-erserstand-2-do-not-know-ho
[9] https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/nbjorner-aplas11.pdf
[10] http://theory.stanford.edu/~nikolaj/z3navigate.html