A Z3, a legkorszerűbb kielégíthetőség Modulo elmélet (SMT) megoldó, amelyet a Microsoft Research fejlesztett ki, az elméletek széles skáláját támogatja, amelyek kulcsfontosságúak a szoftver ellenőrzéséhez és elemzéséhez. Íme néhány példa a Z3 támogatott elméletekre:
- Aritmetika: Ez magában foglalja mind az egész számot, mind a valódi számtani, lehetővé téve a Z3 számára, hogy megoldja a számokat.
-Rögzített méretű bitvektorok: Hasznos a digitális áramkörök és bináris adatok modellezéséhez, ezek rögzített hosszúságú bitek vektorjai.
- Hosszabbító tömbök: A tömböket az indexektől az értékekig terjedő függvényekként kezelik, lehetővé téve a Z3 számára az adatszerkezetekről.
- Adattípusok: A Z3 támogatja a komplex adatszerkezetek, például a listák, a fák és a rekordok érvelését.
- Nem értelmetlen funkciók: Ezek olyan funkciók, amelyek viselkedése nincs meghatározva, hasznos a megvalósítási részletek eltávolításához.
- Km -félékonyítók: A Z3 képes kezelni mind az egzisztenciális, mind az univerzális számszerűsítőket, lehetővé téve a domain összes vagy egyes elemére vonatkozó tulajdonságokról szóló tulajdonságokat.
Ezenkívül a Z3 meghosszabbítható vagy felhasználható más elméletekkel, például kardinalitással és ál-huzat egyenlőtlenségeivel együtt, amelyek hasznosak a kombinatorikus problémákban. Támogatja az egyéni elméletek kódolását és axiomatizálását is, és sokoldalúvá teszi a szoftverek ellenőrzésében és a formális módszerekben különféle alkalmazásokhoz [3] [4] [9] [10].
Idézetek:[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-uterstand-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