# Orquestador de verificación formal SMT-LIB 2.7 / AIGER / BTOR2 (CDCL + BMC + k-inducción + interpolación de Craig + IC3)

Una pila completa de verificación formal en el navegador — sin binario de cvc5/Z3: un analizador de guiones SMT-LIB 2.7 para el núcleo QF_BV + Bool con bit-blasting Tseitin de los operadores FixedSizeBitVectors, un lector AIGER (aag ASCII y aig binario con decodificación delta; salidas como propiedades malas), un lector BTOR2 con bit-blasting a nivel de palabra y un motor SAT CDCL escrito a mano (literales doblemente vigilados, actividades tipo VSIDS, aprendizaje 1-UIP, reinicios) por debajo. Sobre modelos secuenciales ejecuta BMC con trazas testigo, k-inducción con reforzamiento de estados únicos, interpolación de Craig estilo McMillan recalificada por SAT, y un bucle IC3/PDR-lite con bloqueo de cubos.

> Página canónica: https://elysiatools.com/es/tools/smt-smtlib-2-7-cvc5-z3-btor2-aiger-k-induction-cddr-dbg-invariant-synthesis-orchestrator

- **Categoría:** Science & Education

- **Palabras clave:** analizador smt-lib, solver qf_bv, motor sat cdcl, lector aiger, verificacion btor2, comprobacion acotada, invariante k-induccion, interpolacion de craig, ic3 pdr lite, traza de contraejemplo

## Descripción general

Todo funciona sobre una pila TypeScript autónoma: el front-end SMT-LIB cubre el conjunto operatorio común QF_BV/Bool (con expansión de define-fun y enlaces let), los archivos AIGER se leen en ASCII y binario (ANDs con codificación delta, funciones siguientes de los cerrojos, salidas interpretadas como señales malas HWMCC) y los modelos BTOR2 se bit-blastean desde el nivel de palabra. El núcleo SAT es un solver CDCL real — la misma familia de algoritmos dentro de cvc5 y Z3, a escala didáctica. Motores de seguridad: BMC con trazas completas de entrada/estado; k-inducción con restricciones de estados únicos; el motor de interpolación deriva candidatos de la estructura de la refutación y los recalifica con llamadas SAT independientes antes de llamarlos invariantes — un candidato no verificado nunca se reporta como tal; e IC3-lite mantiene cubos bloqueados por fotograma con k-inducción cerrando la prueba. Guía de escala: anchuras ≤ 16 y cotas ≤ 30 mantienen ejecuciones interactivas.

## Entradas

- **Origen del modelo** (select)
- **Texto del modelo (al pegar)** (textarea): (set-logic QF_BV) (assert ...) (check-sat) | aag M I L O A ... | 1 sort bitvec 8 ...
- **Motor de verificación** (select)
- **Cota k para BMC / inducción (1–30)** (number): 10

## Cuándo usarlo

- Al comprobar la equivalencia formal o propiedades lógicas de circuitos y algoritmos aritméticos con vectores de bits.
- Al buscar contraejemplos mínimos y trazas de fallo en modelos secuenciales de hardware descritos en AIGER o BTOR2.
- Al sintetizar y validar inductivamente invariantes de seguridad sin necesidad de instalar binarios locales de cvc5 o Z3.

## Cómo funciona

- El analizador procesa el texto del modelo (SMT-LIB 2.7, AIGER o BTOR2) y transforma las operaciones lógicas y de vectores de bits en cláusulas CNF mediante bit-blasting con transformaciones Tseitin.
- El motor SAT basado en CDCL resuelve las restricciones utilizando literales doblemente vigilados, heurística de actividad tipo VSIDS y aprendizaje de cláusulas 1-UIP.
- Para sistemas secuenciales, el orquestador ejecuta el motor seleccionado (BMC desenrollando transiciones, k-inducción con estados únicos, interpolación certificada o IC3) hasta la cota k definida.
- Se genera un informe detallado en HTML con el veredicto (sat, unsat o unsafe), trazas testigo del contraejemplo y métricas de resolución del motor CDCL.

## Casos de uso

- Demostración de propiedades aritméticas y conmutatividad en operaciones de bitvectors mediante refutación SMT.
- Verificación de estados prohibidos o condiciones de desbordamiento en contadores y autómatas finitos BTOR2.
- Validación de propiedades de seguridad y cerrojos en circuitos lógicos secuenciales mediante AIGER.

## Preguntas frecuentes

### ¿Requiere la herramienta instalar solvers como Z3 o cvc5 en el sistema?

No, incluye su propio analizador y motor CDCL SAT implementado de forma autónoma para ejecutarse por completo en el navegador.

### ¿Qué dialectos y lógicas SMT-LIB están soportados?

Soporta guiones en formato SMT-LIB 2.7 enfocados en el núcleo QF_BV (vectores de bits de tamaño fijo) y Bool, incluyendo enlaces let y funciones define-fun.

### ¿Qué diferencia hay entre el análisis por BMC y por k-inducción?

BMC busca contraejemplos acotados desenrollando el modelo hasta la profundidad k, mientras que la k-inducción intenta probar la seguridad indefinida agregando restricciones de estados únicos.

### ¿Cómo maneja los formatos de circuitos AIGER y BTOR2?

Decodifica representaciones AIGER en ASCII (.aag) y binarias (.aig), y aplica bit-blasting a nivel de palabra para especificaciones secuenciales BTOR2.

### ¿Cuáles son los límites recomendados para mantener la interactividad?

Se recomienda trabajar con anchos de vectores de bits menores o iguales a 16 bits y cotas de búsqueda k de hasta 30 pasos.

## Herramientas relacionadas

- [Desofuscador JavaScript](https://elysiatools.com/es/tools/javascript-deobfuscator): Desofusca y analiza código JavaScript ofuscado para mejorar la legibilidad y comprensión
- [Extractor de Enlaces Markdown](https://elysiatools.com/es/tools/markdown-link-extractor): Extrae enlaces en línea, de referencia y URL simples de documentos Markdown con validación básica de sintaxis
- [Clasificador de Géneros IA](https://elysiatools.com/es/tools/genre-classifier-ai): Clasifica una pista por evidencia medida: textura timbral GTZAN, forma de pulso de la rejilla de beats, balance de bandas, tonalidad y dinámica — con top-3 y el motivo de cada elección.
- [Decodificador LTSSM y Lane Margining de PCIe](https://elysiatools.com/es/tools/pcie-link-training-linkstate-and-lane-margining-eye-decode): Decodifica un registro de entrenamiento de enlace PCIe (secuencia LTSSM + conjuntos ordenados TS1/TS2): línea de tiempo Gen1-Gen6, velocidad/anchura negociadas, bits de identificador de tasa, inversión de polaridad y de lanes, fases de ecualización y diagnóstico de reinicios; también califica informes de lane margining (CSV de pcilmr) y dibuja un mapa de calor del ojo.
- [Generador de marcadores de capítulos de podcast (ID3 / Podcasting 2.0)](https://elysiatools.com/es/tools/podcast-chapter-marker-builder): Pega una lista de capítulos con marcas de tiempo y genera de una vez todos los formatos de entrega: JSON de capítulos Podcasting 2.0 (v1.2.0) y etiqueta RSS podcast:chapters, opción de grabar marcos ID3v2.4 CHAP+CTOC directamente en un MP3 subido (milisegundos como uint32 big-endian normal, offsets 0xFFFFFFFF, subtrama TIT2 por capítulo, se preservan los marcos existentes), pares de comentarios Vorbis CHAPTER001 (OGG/Opus), texto mp4chaps, bloque de marcas de tiempo para la descripción de YouTube y sidecar SRT, más la matriz real de soporte por reproductor (Apple acepta el JSON por RSS desde 2025; Pocket Casts/Overcast solo leen ID3 incrustado; Spotify ignora ambos).
- [Divisor train/test con estratificación](https://elysiatools.com/es/tools/train-test-split-with-stratification): Lee un dataset CSV/JSON y divide en train/validation/test con muestreo estratificado por la columna objetivo (70/15/15 por defecto, semilla reproducible), o valida con k-fold estratificado; incluye informe de distribución de clases por split con barras de desviación, comprobación de fugas por filas duplicadas, vista previa de SMOTE (interpolación de vecinos sobre el split de train) y exportación de los CSV en ZIP.
- [Analizador User-Agent](https://elysiatools.com/es/tools/user-agent-parser): Analiza cadenas User-Agent para extraer información del navegador, sistema operativo, dispositivo y motor
- [Extractor de Registro de Cambios](https://elysiatools.com/es/tools/changelog-extractor): Analiza y extrae datos estructurados de registros de cambios y notas de versión en múltiples formatos

## Ejemplos

- [Ejemplos de Procesamiento de Imágenes Web Python](https://elysiatools.com/es/samples/web-image-processing-python): Ejemplos de procesamiento de imágenes Web Python usando PIL/Pillow incluyendo lectura, guardado, redimensionamiento y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Android Java](https://elysiatools.com/es/samples/android-image-processing-java): Ejemplos de procesamiento de imágenes Android Java incluyendo lectura/escritura, escalado y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Android Kotlin](https://elysiatools.com/es/samples/android-image-processing-kotlin): Ejemplos de procesamiento de imágenes Android Kotlin incluyendo lectura/escritura, escalado y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Web Rust](https://elysiatools.com/es/samples/web-image-processing-rust): Ejemplos de procesamiento de imágenes Web Rust incluyendo lectura/escritura, escalado y conversión de formato
