# Orquestrador de verificação formal SMT-LIB 2.7 / AIGER / BTOR2 (CDCL + BMC + k-indução + interpolação de Craig + IC3)

Uma pilha completa de verificação formal no navegador — sem binário cvc5/Z3: um analisador de scripts SMT-LIB 2.7 para o núcleo QF_BV + Bool com bit-blasting Tseitin dos operadores FixedSizeBitVectors, um leitor AIGER (aag ASCII e aig binário com descodificação delta; saídas como propriedades bad), um leitor BTOR2 com bit-blasting ao nível de palavra e, por baixo, um motor SAT CDCL escrito à mão (literais duplamente vigiados, atividades estilo VSIDS, aprendizagem 1-UIP, reinícios). Em modelos sequenciais executa BMC com traços testemunha, k-indução com reforço de estados únicos, interpolação de Craig estilo McMillan recertificada por SAT e um ciclo IC3/PDR-lite com bloqueio de cubos.

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

- **Categoria:** Science & Education

- **Palavras-chave:** analisador smt-lib, solver qf_bv, motor sat cdcl, leitor aiger, verificacao btor2, verificacao limitada, invariante k-inducao, interpolacao de craig, ic3 pdr lite, traca de contraexemplo

## Visão geral

Tudo corre numa pilha TypeScript autónoma: o front-end SMT-LIB cobre o conjunto operatorio QF_BV/Bool habitual (com inlining de define-fun e vinculações let), os ficheiros AIGER são lidos em ASCII e binário (ANDs com codificação delta, funções next dos latches, saídas interpretadas como sinais maus HWMCC) e os modelos BTOR2 são bit-blasted a partir do nível de palavra. O núcleo SAT é um solver CDCL verdadeiro — a mesma família de algoritmos dentro do cvc5 e do Z3, à escala didática. Motores de segurança: o BMC encontra contraexemplos mais curtos com traços completos; a k-indução acrescenta restrições de estados únicos; o motor de interpolação deriva candidatos da estrutura da refutação e re-verifica cada um com chamadas SAT independentes antes de o chamar invariante — um candidato não verificado nunca é reportado como tal; e o IC3-lite mantém cubos bloqueados por frame, fechando a prova com k-indução. Guia de escala: larguras ≤ 16 e limites ≤ 30 mantêm execuções interativas.

## Entradas

- **Origem do modelo** (select)
- **Texto do modelo (ao colar)** (textarea): (set-logic QF_BV) (assert ...) (check-sat) | aag M I L O A ... | 1 sort bitvec 8 ...
- **Motor de verificação** (select)
- **Limite k para BMC / indução (1–30)** (number): 10

## Quando usar

- Ao validar equivalência lógica e propriedades de circuitos lógicos descritos nos formatos SMT-LIB (lógica QF_BV), BTOR2 ou AIGER.
- Para encontrar contraexemplos de execução mínima em sistemas sequenciais por verificação de modelos limitada (BMC).
- Ao provar invariantes de segurança indutivos sem a necessidade de instalar binários nativos pesados de solvers como cvc5 ou Z3.

## Como funciona

- Analisa scripts SMT-LIB 2.7 (QF_BV + Bool), arquivos AIGER (ASCII/binário) ou modelos BTOR2 em nível de palavras e aplica bit-blasting de Tseitin para gerar fórmulas proposicionais em CNF.
- Executa o motor SAT CDCL integrado, equipado com literais duplamente vigiados, heurística de ramificação VSIDS, aprendizado de cláusulas 1-UIP e reinícios periódicos.
- Aplica o algoritmo selecionado (desenrolamento BMC, k-indução com estados únicos, interpolação de Craig recertificada ou bloqueio de cubos IC3-lite) para atestar segurança ou produzir trilhas testemunhas de contraexemplo.

## Casos de uso

- Verificação de propriedades aritméticas e comutatividade de operadores bit-vector em especificações de hardware.
- Detecção de estados de erro inalcançáveis ou contraexemplos de ativação em máquinas de estados finitos codificadas em BTOR2.
- Depuração e prova de segurança formal de latches e circuitos lógicos lidos a partir de benchmarks AIGER HWMCC.

## Perguntas frequentes

### É necessário instalar solvers externos como Z3 ou cvc5?

Não. Todo o analisador, o bit-blasting e o motor CDCL rodam localmente no navegador em TypeScript autônomo.

### Quais formatos de modelo de entrada são aceitos?

O orquestrador aceita scripts SMT-LIB 2.7 (lógica QF_BV e Bool), circuitos AIGER (.aag e .aig) e especificações sequenciais BTOR2.

### Qual é a largura de bits e profundidade recomendada para execuções interativas?

Para manter a execução fluida no navegador, recomenda-se vetores de bits de largura ≤ 16 e limite de passos k ≤ 30.

### Como o motor garante a validade dos invariantes gerados por interpolação?

Cada candidato derivado da refutação é submetido a chamadas SAT independentes de re-verificação antes de ser classificado como invariante válido.

### O que acontece quando uma propriedade é violada no BMC?

O solver retorna o veredito UNSAFE e constrói o traço testemunha completo com os valores de entrada e estados em cada ciclo.

## Ferramentas relacionadas

- [Desofuscador JavaScript](https://elysiatools.com/pt/tools/javascript-deobfuscator): Desofusca e analisa código JavaScript ofuscado para melhorar legibilidade e compreensão
- [Extrator de Links Markdown](https://elysiatools.com/pt/tools/markdown-link-extractor): Extrai links em linha, links de referência e URLs simples de documentos Markdown com validação básica de sintaxe
- [Classificador de Gêneros IA](https://elysiatools.com/pt/tools/genre-classifier-ai): Classifica uma faixa por evidência medida: textura timbral GTZAN, forma de pulso da grade de batidas, equilíbrio de bandas, tonalidade e dinâmica — com top-3 e o motivo de cada escolha.
- [Decodificador LTSSM e Lane Margining PCIe](https://elysiatools.com/pt/tools/pcie-link-training-linkstate-and-lane-margining-eye-decode): Decodifica um log de treinamento de link PCIe (sequência LTSSM + conjuntos TS1/TS2): linha do tempo Gen1-Gen6, velocidade/largura negociadas, bits do identificador de taxa, inversão de polaridade/lanes, fases de equalização e diagnóstico de reinícios; avalia relatórios de lane margining (CSV pcilmr) e desenha o mapa de calor do olho.
- [Gerador de marcadores de capítulos de podcast (ID3 / Podcasting 2.0)](https://elysiatools.com/pt/tools/podcast-chapter-marker-builder): Cole uma lista de capítulos com timecodes e gere de uma vez todos os formatos de entrega: JSON de capítulos Podcasting 2.0 (v1.2.0) e tag RSS podcast:chapters, gravação opcional dos frames ID3v2.4 CHAP+CTOC direto num MP3 enviado (milissegundos como uint32 big-endian simples, offsets 0xFFFFFFFF, subframe TIT2 por capítulo, frames existentes preservados), pares de comentários Vorbis CHAPTER001 (OGG/Opus), texto mp4chaps, bloco de timestamps para a descrição do YouTube e sidecar SRT, mais a matriz real de suporte dos players (Apple aceita o JSON via RSS desde 2025; Pocket Casts/Overcast leem só ID3 embutido; Spotify ignora ambos).
- [Divisor train/test com estratificação](https://elysiatools.com/pt/tools/train-test-split-with-stratification): Lê um dataset CSV/JSON e divide em train/validation/test com amostragem estratificada pela coluna alvo (70/15/15 padrão, semente reprodutível), ou k-fold estratificado; relatório de distribuição de classes por split com barras de desvio, checagem de vazamento por linhas duplicadas, prévia de SMOTE (interpolação de vizinhos no treino) e exportação dos CSV em ZIP.
- [Analisador User-Agent](https://elysiatools.com/pt/tools/user-agent-parser): Analisa strings User-Agent para extrair informações do navegador, sistema operacional, dispositivo e motor
- [Extrator de Registro de Alterações](https://elysiatools.com/pt/tools/changelog-extractor): Analisa e extrai dados estruturados de registros de alterações e notas de versão em vários formatos

## Exemplos

- [Exemplos de Processamento de Imagem Web Python](https://elysiatools.com/pt/samples/web-image-processing-python): Exemplos de processamento de imagem Web Python usando PIL/Pillow incluindo leitura, salvamento, redimensionamento e conversão de formato
- [Exemplos de Processamento de Imagem Android Java](https://elysiatools.com/pt/samples/android-image-processing-java): Exemplos de processamento de imagem Android Java incluindo leitura/escrita, dimensionamento e conversão de formato
- [Exemplos de Processamento de Imagem Android Kotlin](https://elysiatools.com/pt/samples/android-image-processing-kotlin): Exemplos de processamento de imagem Android Kotlin incluindo leitura/escrita, dimensionamento e conversão de formato
- [Exemplos de Processamento de Imagem Web Rust](https://elysiatools.com/pt/samples/web-image-processing-rust): Exemplos de processamento de imagem Web Rust incluindo leitura/gravação, redimensionamento e conversão de formato
