Z3, nejmodernější řešitel modulo teorie (SMT) vyvinutý společností Microsoft Research, podporuje širokou škálu teorií, které jsou pro ověření a analýzu softwaru zásadní. Zde je několik příkladů teorií Z3:
- Aritmetika: Zahrnuje to celé číslo i skutečné aritmetické, což umožňuje Z3 řešit rovnice zahrnující čísla.
-Bit-vektory s pevnou velikostí: Užitečné pro modelování digitálních obvodů a binárních dat, jedná se o vektory bitů s pevnou délkou.
- Rozšíření pole: Pole jsou považována za funkce od indexů k hodnotám, což umožňuje Z3 rozumět datovým strukturám.
- Datatypy: Z3 podporuje uvažování o složitých datových strukturách, jako jsou seznamy, stromy a záznamy.
- Neinterpretované funkce: Jedná se o funkce, jejichž chování není definováno, užitečné pro abstrahování podrobností o implementaci.
- Kvantifikátory: Z3 zvládnou jak existenciální, tak univerzální kvantifikátory, což mu umožňuje uvažovat o vlastnostech, které se vztahují na všechny nebo některé prvky domény.
Kromě toho lze Z3 prodloužit nebo použít ve spojení s jinými teoriemi, jako je kardinálnost a pseudo-boolean nerovnosti, které jsou užitečné v kombinatoriálních problémech. Podporuje také kódování a axiomatizující vlastní teorie, což je všestranné pro různé aplikace při ověření softwaru a formálních metodách [3] [4] [9] [10].
Citace:[1] https://theory.stanford.edu/~nikolaj/programmingz3.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://stackoverflow.com/questions/73789804/theory-of-arrays-in-z3-1-model-is-difficult-to-Unstand-2-do-not-now-ho
[9] https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/nbjorner-aplas1.pdf
[10] http://theory.stanford.edu/~nikolaj/z3navigate.html