# Orchestrateur de vérification formelle SMT-LIB 2.7 / AIGER / BTOR2 (CDCL + BMC + k-induction + interpolation de Craig + IC3)

Une pile complète de vérification formelle dans le navigateur — sans binaire cvc5/Z3 : un analyseur de scripts SMT-LIB 2.7 pour le cœur QF_BV + Bool avec bit-blasting Tseitin des opérateurs FixedSizeBitVectors, un lecteur AIGER (aag ASCII et aig binaire avec décodage delta ; sorties comme propriétés bad), un lecteur BTOR2 avec bit-blasting au niveau du mot et un moteur SAT CDCL écrit à la main (littéraux doublement surveillés, activités façon VSIDS, apprentissage 1-UIP, redémarrages). Sur les modèles séquentiels : BMC avec traces témoins, k-induction avec renforcement par états uniques, interpolation de Craig à la McMillan re-certifiée par SAT, et une boucle IC3/PDR-lite à blocage de cubes.

> Page canonique: https://elysiatools.com/fr/tools/smt-smtlib-2-7-cvc5-z3-btor2-aiger-k-induction-cddr-dbg-invariant-synthesis-orchestrator

- **Catégorie:** Science & Education

- **Mots-clés:** analyseur smt-lib, solveur qf_bv, moteur sat cdcl, lecteur aiger, verification btor2, model checking borne, invariant k-induction, interpolation de craig, ic3 pdr lite, trace de contre-exemple

## Présentation

Tout tourne sur une pile TypeScript autonome : le frontal SMT-LIB couvre l’ensemble d’opérateurs QF_BV/Bool courant (avec inlining des define-fun et liaisons let), les fichiers AIGER se lisent en ASCII comme en binaire, et les modèles BTOR2 sont bit-blastés depuis le niveau du mot. Le cœur SAT est un vrai solveur CDCL — la même famille d’algorithmes que dans cvc5 et Z3, à échelle didactique. Moteurs de sûreté : la BMC trouve les contre-exemples les plus courts avec traces complètes ; la k-induction ajoute des contraintes d’unicité d’états ; le moteur d’interpolation dérive des candidats de la structure de réfutation puis re-vérifie chacun par des appels SAT indépendants avant de le nommer invariant — un candidat non vérifié n’est jamais présenté comme tel ; IC3-lite maintient des cubes bloqués par trames, la preuve étant fermée par k-induction. Repères d’échelle : largeurs ≤ 16 et bornes ≤ 30 gardent l’exécution interactive.

## Entrées

- **Source du modèle** (select)
- **Texte du modèle (en mode collage)** (textarea): (set-logic QF_BV) (assert ...) (check-sat) | aag M I L O A ... | 1 sort bitvec 8 ...
- **Moteur de vérification** (select)
- **Borne k pour BMC / induction (1–30)** (number): 10

## Quand l'utiliser

- Pour valider formellement des théorèmes ou propriétés arithmétiques bit-vectorielles en logique QF_BV via SMT-LIB 2.7 sans installer cvc5 ou Z3.
- Pour vérifier des propriétés de sûreté (bad states) sur des modèles séquentiels décrits au format BTOR2 ou AIGER (ASCII .aag et binaire .aig).
- Pour comparer les performances et les diagnostics de plusieurs algorithmes de vérification (BMC, k-induction, interpolation de Craig, IC3/PDR-lite) sur un même système séquentiel.

## Fonctionnement

- L'analyseur lit le modèle SMT-LIB 2.7, le netlist AIGER ou la description BTOR2, effectue l'expansion des définitions et applique le bit-blasting de Tseitin pour traduire la logique au niveau du mot en clauses propositionnelles.
- Le moteur sélectionné (BMC, k-induction, interpolation de Craig, IC3-lite ou tous combinés) déroule les transitions d'états ou génère les lemmes inductifs jusqu'à la borne k spécifiée.
- Le cœur SAT CDCL interne résout les contraintes par affectation de littéraux surveillés, analyse de conflits 1-UIP et apprentissage de clauses.
- L'outil génère un rapport HTML détaillé affichant le verdict (satisfiable, insatisfiable, sûr ou non sûr), les statistiques du solveur CDCL et la trace complète du contre-exemple en cas de violation.

## Cas d'usage

- Preuve formelle d'équivalence logique ou de commutativité d'opérations matérielles 16 bits en logique QF_BV.
- Détection du plus court contre-exemple sur un automate séquentiel ou un compteur BTOR2 avant déploiement matériel.
- Certification d'invariants de sécurité sur des circuits logiques au format AIGER à l'aide de la k-induction avec renforcement par états uniques.

## Questions fréquentes

### Quels formats d'entrée sont pris en charge par l'orchestrateur ?

L'outil prend en charge les scripts SMT-LIB 2.7 (logique QF_BV et booléenne), les modèles AIGER (fichiers ASCII .aag et binaires .aig) ainsi que les descriptions séquentielles BTOR2.

### Un binaire local ou un serveur cvc5 / Z3 est-il nécessaire ?

Non, l'ensemble de la pile de bit-blasting et le solveur SAT CDCL sont entièrement implémentés en TypeScript autonome et s'exécutent localement dans le navigateur.

### Que contient la trace de contre-exemple en cas d'état non sûr ?

Le rapport HTML fournit la séquence pas à pas des valeurs d'entrées et des variables d'état menant de l'état initial à la violation de la propriété.

### Comment l'interpolation de Craig garantit-elle la validité de l'invariant ?

Chaque candidat d'interpolant calculé depuis le graphe de réfutation est re-certifié de manière indépendante par des appels SAT dédiés avant d'être validé comme invariant.

### Quelles sont les limites recommandées pour une exécution fluide ?

Pour maintenir un temps de réponse interactif dans le navigateur, il est recommandé de limiter les vecteurs de bits à 16 bits et la borne de profondeur k à 30.

## Outils associés

- [Désobfuscateur JavaScript](https://elysiatools.com/fr/tools/javascript-deobfuscator): Désobfusque et analyse le code JavaScript obscurci pour améliorer la lisibilité et la compréhension
- [Extracteur de Liens Markdown](https://elysiatools.com/fr/tools/markdown-link-extractor): Extrait les liens en ligne, les liens de référence et les URL bruts des documents Markdown avec validation de syntaxe de base
- [Classificateur de Genres IA](https://elysiatools.com/fr/tools/genre-classifier-ai): Classe une piste sur preuves mesurées : texture timbrale GTZAN, forme du pouls de la grille de temps, balance des bandes, tonalité et dynamique — avec un top-3 et la raison de chaque choix.
- [Décodeur LTSSM et Lane Margining PCIe](https://elysiatools.com/fr/tools/pcie-link-training-linkstate-and-lane-margining-eye-decode): Décode un journal d’apprentissage de lien PCIe (séquence LTSSM + ensembles ordonnés TS1/TS2) : chronologie Gen1-Gen6, vitesse/largeur négociées, bits d’identifiant de débit, inversions de polarité et de lane, phases d’égalisation et diagnostic des redémarrages ; note aussi les rapports de lane margining (CSV pcilmr) et dessine la carte de chaleur de l’œil.
- [Générateur de marqueurs de chapitres podcast (ID3 / Podcasting 2.0)](https://elysiatools.com/fr/tools/podcast-chapter-marker-builder): Collez une liste de chapitres horodatés et générez d'un coup tous les formats de livraison : JSON de chapitres Podcasting 2.0 (v1.2.0) et balise RSS podcast:chapters, gravure optionnelle des trames ID3v2.4 CHAP+CTOC dans un MP3 téléversé (millisecondes en uint32 big-endian simple, offsets 0xFFFFFFFF, sous-trame TIT2 par chapitre, trames existantes préservées), paires de commentaires Vorbis CHAPTER001 (OGG/Opus), texte mp4chaps, bloc d'horodatages pour la description YouTube et sidecar SRT, plus la matrice réelle de support des lecteurs (Apple accepte le JSON via RSS depuis 2025 ; Pocket Casts/Overcast ne lisent que l'ID3 embarqué ; Spotify ignore les deux).
- [Découpage train/test stratifié](https://elysiatools.com/fr/tools/train-test-split-with-stratification): Lit un jeu de données CSV/JSON et le découpe en train/validation/test avec échantillonnage stratifié par la colonne cible (70/15/15 par défaut, graine reproductible), ou k-fold stratifié ; rapport de distribution des classes par split avec barres d'écart, contrôle des fuites par lignes dupliquées, aperçu SMOTE (interpolation des plus proches voisins sur le train) et export des CSV en ZIP.
- [Analyseur User-Agent](https://elysiatools.com/fr/tools/user-agent-parser): Analyse les chaînes User-Agent pour extraire des informations sur le navigateur, le système d'exploitation, l'appareil et le moteur
- [Extracteur de Journal des Modifications](https://elysiatools.com/fr/tools/changelog-extractor): Analyse et extrait des données structurées de journaux des modifications et de notes de version dans plusieurs formats

## Exemples

- [Exemples de Traitement d'Images Web Python](https://elysiatools.com/fr/samples/web-image-processing-python): Exemples de traitement d'images Web Python utilisant PIL/Pillow incluant la lecture, l'enregistrement, le redimensionnement et la conversion de format
- [Exemples de Traitement d'Images Android Java](https://elysiatools.com/fr/samples/android-image-processing-java): Exemples de traitement d'images Android Java incluant lecture/écriture, mise à l'échelle et conversion de format
- [Exemples de Traitement d'Images Android Kotlin](https://elysiatools.com/fr/samples/android-image-processing-kotlin): Exemples de traitement d'images Android Kotlin incluant lecture/écriture, mise à l'échelle et conversion de format
- [Exemples de Traitement d'Images Web Rust](https://elysiatools.com/fr/samples/web-image-processing-rust): Exemples de traitement d'images Web Rust incluant lecture/écriture, redimensionnement et conversion de format
