Z3, un solver de teorii ale modulului de satisfacție de ultimă generație (SMT) dezvoltat de Microsoft Research, susține o gamă largă de teorii care sunt cruciale pentru verificarea și analiza software-ului. Iată câteva exemple de teorii pe care Z3 le suportă:
- Aritmetică: Aceasta include atât aritmetică întreg, cât și aritmetică reală, permițând Z3 să rezolve ecuațiile care implică numere.
-Vectori de biți cu dimensiuni fixe: util pentru modelarea circuitelor digitale și a datelor binare, aceștia sunt vectori de biți cu o lungime fixă.
- Array -uri extensionale: tablourile sunt tratate ca funcții de la indici la valori, permițând Z3 la rațiunea structurilor de date.
- Datepuri: Z3 acceptă raționamente despre structuri de date complexe, cum ar fi liste, copaci și înregistrări.
- Funcții neinterpretate: Acestea sunt funcții al căror comportament nu este definit, utile pentru a elimina detaliile de implementare.
- Cuantificatori: Z3 poate gestiona atât cuantificatori existențiali, cât și universali, permițându -i să motiveze proprietățile care se aplică tuturor sau unele elemente ale unui domeniu.
În plus, Z3 poate fi extins sau utilizat împreună cu alte teorii, cum ar fi cardinalitatea și inegalitățile pseudo-booleane, care sunt utile în problemele combinatorii. De asemenea, acceptă codificarea și axiomatizarea teoriilor personalizate, ceea ce o face versatilă pentru diverse aplicații în verificarea software -ului și metodele formale [3] [4] [9] [10].
Citări:[1] https://theory.stanford.edu/~nikolaj/programmingz3.html
[2] https://specs.openstack.org/openstack/congress-pecs/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-pay/
[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-hifficul-le-understand-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