Z3, najnowocześniejsze teorie satysfakcjonowości (SMT) opracowane przez Microsoft Research, obsługuje szeroki zakres teorii, które są kluczowe dla weryfikacji i analizy oprogramowania. Oto kilka przykładów teorii obsługiwanych przez Z3:
- Arytmetyka: obejmuje to zarówno całkowitą, jak i prawdziwą arytmetykę, umożliwiając Z3 rozwiązywanie równań obejmujących liczby.
-Wektory bitowe o stałej wielkości: Przydatne do modelowania obwodów cyfrowych i danych binarnych, są to wektory bitów o stałej długości.
- Tablice ekstensywne: Tablice są traktowane jako funkcje od wskaźników do wartości, umożliwiając Z3 rozumowanie struktur danych.
- Datatypy: Z3 obsługuje rozumowanie o złożonych strukturach danych, takich jak listy, drzewa i rekordy.
- Funkcje niezniszczone: Są to funkcje, których zachowanie nie jest zdefiniowane, przydatne do wyodrębnienia szczegółów implementacji.
- kwantyfikatory: Z3 może obsługiwać zarówno egzystencjalne, jak i uniwersalne kwantyfikatory, pozwalając mu uzasadnić właściwości, które mają zastosowanie do wszystkich lub niektórych elementów domeny.
Ponadto Z3 można rozszerzyć lub użyć w połączeniu z innymi teoriami, takimi jak nierówności kardynałów i pseudo-bolejnej, które są przydatne w problemach kombinatorycznych. Obsługuje także kodowanie i aksjomatyzację teorii niestandardowych, co czyni je wszechstronnymi dla różnych aplikacji w weryfikacji oprogramowania i metod formalnych [3] [4] [9] [10].
Cytaty:[1] https://theory.stanford.edu/~nikolaJ/programingz3.html
[2] https://specs.openstack.org/openstack/congress-specs/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://stackaverflow.com/questions/73789804/theory-of-arrays-in-z3-1-model-is-diffill-to-nderstand-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