Z3, un solveur de théories de modulo de satisfaction (SMT) de pointe développé par Microsoft Research, prend en charge un large éventail de théories qui sont cruciales pour la vérification et l'analyse des logiciels. Voici quelques exemples des théories soutient Z3:
- Arithmétique: cela inclut à la fois entier et une véritable arithmétique, permettant à Z3 de résoudre les équations impliquant des nombres.
- Vectors bit de taille fixe: utile pour la modélisation des circuits numériques et des données binaires, ce sont des vecteurs de bits avec une longueur fixe.
- Tableaux d'extension: les tableaux sont traités comme des fonctions des indices aux valeurs, permettant à Z3 de raisonner sur les structures de données.
- Datatypes: Z3 prend en charge le raisonnement sur les structures de données complexes telles que les listes, les arbres et les enregistrements.
- fonctions non interprétées: ce sont des fonctions dont le comportement n'est pas défini, utile pour abstraction des détails de l'implémentation.
- Quantificateurs: Z3 peut gérer à la fois les quantificateurs existentiels et universels, ce qui lui permet de raisonner sur les propriétés qui s'appliquent à tous ou à certains éléments d'un domaine.
De plus, le Z3 peut être étendu ou utilisé conjointement avec d'autres théories, telles que la cardinalité et les inégalités pseudo-booliennes, qui sont utiles dans les problèmes combinatoires. Il prend également en charge le codage et axiomatiser les théories personnalisées, ce qui le rend polyvalent pour diverses applications dans la vérification logicielle et les méthodes formelles [3] [4] [9] [10].
Citations:[1] https://theory.stanford.edu/~nikolaj/programmingz3
[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-understand-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