Z3, en avanceret tilfredshedsmoduloteorier (SMT) -solver udviklet af Microsoft Research, understøtter en bred vifte af teorier, der er afgørende for softwareverifikation og analyse. Her er nogle eksempler på teorierne Z3 understøtter:
- Aritmetik: Dette inkluderer både heltal og reel aritmetik, hvilket giver Z3 mulighed for at løse ligninger, der involverer tal.
-Bitvektorer med fast størrelse: Nyttig til modellering af digitale kredsløb og binære data, dette er vektorer med bits med en fast længde.
- Extensional Arrays: Arrays behandles som funktioner fra indekser til værdier, hvilket gør det muligt for Z3 at resonnere om datastrukturer.
- Datatyper: Z3 understøtter ræsonnement om komplekse datastrukturer såsom lister, træer og poster.
- Ufortolkede funktioner: Dette er funktioner, hvis opførsel ikke er defineret, nyttig til abstraktion af implementeringsdetaljer.
- Kvantificatorer: Z3 kan håndtere både eksistentielle og universelle kvantificatorer, så det kan resonnere om egenskaber, der gælder for alle eller nogle elementer i et domæne.
Derudover kan Z3 udvides eller bruges i forbindelse med andre teorier, såsom kardinalitet og pseudo-ud-udøvelser, som er nyttige til kombinatoriske problemer. Det understøtter også kodning og aksiomatisering af brugerdefinerede teorier, hvilket gør det alsidigt til forskellige applikationer i softwareverifikation og formelle metoder [3] [4] [9] [10].
Citater:[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-ofarrayer-in-z3-1-model-is-difficult-to-forstå-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