Microsoft Researchi välja töötatud nüüdisaegse rahuldavuse modulo teooriate (SMT) lahendaja Z3 toetab mitmesuguseid teooriaid, mis on tarkvara kontrollimiseks ja analüüsimiseks üliolulised. Siin on mõned näited teooriatest, mida Z3 toetab:
- aritmeetika: see hõlmab nii täisarvu kui ka tõelist aritmeetikat, mis võimaldab Z3 -l lahendada numbritega võrrandeid.
-Fikseeritud suurusega bitivektorid: kasulikud digitaalsete ahelate ja binaarsete andmete modelleerimiseks, need on fikseeritud pikkusega bittide vektorid.
- Pikendusmassiivid: massiive käsitletakse funktsioonidena indeksist väärtusteni, võimaldades Z3 -l põhjustada andmestruktuuride osas.
- Andmetüübid: Z3 toetab põhjendusi keerukate andmestruktuuride, näiteks loendite, puude ja kirjete kohta.
- tõlgendamata funktsioonid: need on funktsioonid, mille käitumine pole määratletud, kasulik rakendamise üksikasjade ärakasutamiseks.
- Kvantifikaatorid: Z3 saab hakkama nii eksistentsiaalsete kui ka universaalsete kvantifikaatoritega, võimaldades sellel arutada omadusi, mis kehtivad domeeni kõigi või mõnede elementide suhtes.
Lisaks saab Z3-d laiendada või kasutada koos muude teooriatega, näiteks kardinaalsus ja pseudo-boolean ebavõrdsus, mis on kasulikud kombinatoorsetes probleemides. See toetab ka kohandatud teooriate kodeerimist ja aksoomatiseerimist, muutes selle mitmekülgseks tarkvara kontrollimisel ja formaalsete meetodite erinevate rakenduste jaoks [3] [4] [9] [10].
Tsitaadid:[1] https://theory.stanford.edu/~nikolaj/programmingz3.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/
]
[9] https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/nbjorner-aplas11.pdf
[10] http://theory.stanford.edu/~nikolaj/z3navige.html