Microsoft Researchin kehittämä Z3, huipputekninen tyydytysmoduloteoriat (SMT) -ratkaisija, tukee laajaa valikoimaa teorioita, jotka ovat ratkaisevan tärkeitä ohjelmistojen todentamiselle ja analysoinnille. Tässä on joitain esimerkkejä Z3: n teorioista:
- Aritmeettinen: Tähän sisältyy sekä kokonaisluku että todellinen aritmeettinen, jolloin Z3 voi ratkaista yhtälöt, joihin liittyy numeroita.
-Kiinteäkokoiset bittivarjot: Hyödyllisiä digitaalisten piirien ja binaaristen tietojen mallintamiseen, nämä ovat bittien vektoreita, joiden pituus on kiinteä.
- Laajennusryhmät: Taulukkoja käsitellään funktioina indekseistä arvoihin, jolloin Z3 voidaan perustella tietorakenteiden suhteen.
- Datatyypit: Z3 tukee päättelyä monimutkaisista tietorakenteista, kuten luetteloista, puista ja tietueista.
- Tulkimattomat toiminnot: Nämä ovat toimintoja, joiden käyttäytymistä ei ole määritelty, hyödyllinen toteutuksen yksityiskohtien abstraktille.
- Kvantifikaattorit: Z3 pystyy käsittelemään sekä eksistentiaalisia että yleisiä kvantifioijia, jolloin se voi perustella ominaisuuksiin, joita sovelletaan kaikkiin tai joihinkin alueen elementteihin.
Lisäksi Z3: ta voidaan laajentaa tai käyttää yhdessä muiden teorioiden, kuten kardinaalisuuden ja pseudo-boolean eriarvoisuuden kanssa, jotka ovat hyödyllisiä yhdistelmäongelmissa. Se tukee myös koodausta ja aksiomaisoivaa mukautettuja teorioita, mikä tekee siitä monipuolisen eri sovelluksille ohjelmistojen todentamisessa ja muodollisissa menetelmissä [3] [4] [9] [10].
Viittaukset:[1] https://theory.stanford.edu/~nikolaj/programming3.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/proodyrec.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/z3navigate.html