Z3, pemecah teori modulo kepuasan canggih (SMT) yang dikembangkan oleh Microsoft Research, mendukung berbagai teori yang sangat penting untuk verifikasi dan analisis perangkat lunak. Berikut adalah beberapa contoh teori yang didukung Z3:
- Aritmatika: Ini termasuk integer dan aritmatika nyata, memungkinkan Z3 untuk memecahkan persamaan yang melibatkan angka.
-Vektor bit ukuran tetap: Berguna untuk memodelkan sirkuit digital dan data biner, ini adalah vektor bit dengan panjang tetap.
- Array ekstensional: Array diperlakukan sebagai fungsi dari indeks ke nilai, memungkinkan Z3 untuk beralasan tentang struktur data.
- DataTypes: Z3 mendukung penalaran tentang struktur data yang kompleks seperti daftar, pohon, dan catatan.
- Fungsi yang tidak ditafsirkan: Ini adalah fungsi yang perilakunya tidak didefinisikan, berguna untuk mengabstraksi detail implementasi.
- Quantifiers: Z3 dapat menangani kuantifikasi eksistensial dan universal, yang memungkinkannya untuk beralasan tentang properti yang berlaku untuk semua atau beberapa elemen domain.
Selain itu, Z3 dapat diperpanjang atau digunakan bersama dengan teori lain, seperti kardinalitas dan ketidaksetaraan semu-Boologi, yang berguna dalam masalah kombinatorial. Ini juga mendukung pengkodean dan aksiomasi teori khusus, menjadikannya serbaguna untuk berbagai aplikasi dalam verifikasi perangkat lunak dan metode formal [3] [4] [9] [10].
Kutipan:[1] https://theory.stanford.edu/~nikolaj/programmingz3.html
[2] https://specs.openstack.org/openstack/congress-pecs/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/into/
[8] https://stackoverflow.com/questions/73789804/theory-of-arrays-in-z3-1-model-is-dificul-understand-2-do-not-now-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