Z3, en topp moderne SMT-løsning for tilfredsstillende modulo-teorier (SMT) utviklet av Microsoft Research, støtter et bredt spekter av teorier som er avgjørende for programvareverifisering og analyse. Her er noen eksempler på teoriene Z3 støtter:
- Aritmetikk: Dette inkluderer både heltall og ekte aritmetikk, slik at Z3 kan løse ligninger som involverer tall.
-Bitvektorer med fast størrelse: Nyttig for modellering av digitale kretsløp og binære data, dette er vektorer av biter med fast lengde.
- Ekstensielle matriser: Arrays blir behandlet som funksjoner fra indekser til verdier, slik at Z3 kan resonnere om datastrukturer.
- Datatyper: Z3 støtter resonnement om komplekse datastrukturer som lister, trær og poster.
- Ufortolkede funksjoner: Dette er funksjoner hvis oppførsel ikke er definert, nyttig for å abstrahere bort implementeringsdetaljer.
- Kvantifiserere: Z3 kan håndtere både eksistensielle og universelle kvantifiserere, slik at den kan resonnere om egenskaper som gjelder alle eller noen elementer i et domene.
I tillegg kan Z3 utvides eller brukes i forbindelse med andre teorier, for eksempel kardinalitet og pseudo-boolean ulikheter, som er nyttige i kombinatoriske problemer. Den støtter også koding og aksiomatiserende tilpassede teorier, noe som gjør det allsidig for forskjellige applikasjoner innen programvareverifisering og formelle metoder [3] [4] [9] [10].
Sitasjoner:[1] https://theory.stanford.edu/~nikolaj/programmingz3.html
[2] https://specs.openstack.org/openstack/congress-specs/specs/rocky/alternative-motic-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-standstand-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