Z3, najmodernejší riešiteľ teórií spokojnosti s spokojnosťou (SMT) vyvinutý spoločnosťou Microsoft Research, podporuje širokú škálu teórií, ktoré sú rozhodujúce pre overenie a analýzu softvéru. Tu je niekoľko príkladov teórií podpory Z3:
- Aritmetika: Zahŕňa to celočíselné aj skutočné aritmetické, čo umožňuje Z3 vyriešiť rovnice zahŕňajúce čísla.
-Bit-vektory s pevnou veľkosťou: Užitočné na modelovanie digitálnych obvodov a binárnych údajov sú to vektory bitov s pevnou dĺžkou.
- Rozšírené polia: Polia sa považujú za funkcie od indexov k hodnotám, čo umožňuje Z3 uvažovať o dátových štruktúrach.
- Datatypy: Z3 podporuje zdôvodnenie zložitých dátových štruktúr, ako sú zoznamy, stromy a záznamy.
- Neinterpretované funkcie: Toto sú funkcie, ktorých správanie nie je definované, užitočné na abstrakt podrobností o implementácii.
- Kvantifikátory: Z3 dokáže zvládnuť existenčné aj univerzálne kvantifikátory, čo mu umožňuje uvažovať o vlastnostiach, ktoré sa vzťahujú na všetky alebo niektoré prvky domény.
Z3 sa navyše môže rozšíriť alebo použiť v spojení s inými teóriami, ako sú kardinalita a pseudo-booleovské nerovnosti, ktoré sú užitočné v kombinatorických problémoch. Podporuje tiež kódovanie a axiomatizáciu vlastných teórií, vďaka čomu je všestranná pre rôzne aplikácie pri overení softvéru a formálnych metódach [3] [4] [9] [10].
Citácie:[1] https://theory.stanford.edu/~nikolaj/programmingz3.html
[2] https://specs.openstack.org/openstack/congress-specs/specs/rocky/alternative-inine-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-anderStand-2-der --no-kon-konknow-hono
[9] https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/nbjorner-aplas11.pdf
[10] http://theory.stanford.edu/~nikolaj/z3navigate.html