# SMT-LIB 2.7 / AIGER / BTOR2 形式验证编排器（CDCL + BMC + k-归纳 + Craig 插值 + IC3）

一套完整的页内形式验证栈——无需 cvc5/Z3 二进制：SMT-LIB 2.7 脚本解析器覆盖 QF_BV + Bool 核心（FixedSizeBitVectors 算子的 Tseitin 位爆破：加减乘除取模、移位、比较、拼接/截取/扩展、ite），AIGER 读取器（ASCII aag 与二进制 aig delta 解码；输出按坏属性解释），带字级位爆破的 BTOR2 读取器，以及底座上的手写 CDCL SAT 引擎（双监视文字、VSIDS 活性、1-UIP 学习、重启）。顺序模型上运行带反例见证轨迹的有界模型检测、带唯一状态强化的 k-归纳、从反驳计算并经独立 SAT 复核后方可信任的 McMillan 式 Craig 插值，以及带前驱立方阻塞的 IC3/PDR-lite 帧循环。

> 标准页面: https://elysiatools.com/zh/tools/smt-smtlib-2-7-cvc5-z3-btor2-aiger-k-induction-cddr-dbg-invariant-synthesis-orchestrator

- **分类:** Science & Education

- **关键词:** smt-lib 解析器, qf_bv 求解器, cdcl sat 引擎, aiger 读取器, btor2 模型检测, 有界模型检测, k-归纳不变式, craig 插值, ic3 pdr lite, 反例轨迹

## 概述

全部运行在自包含的 TypeScript 栈上：SMT-LIB 前端覆盖常用 QF_BV/Bool 算子集（支持 define-fun 内联与 let 绑定）；AIGER 文件同时支持 ASCII 与二进制（delta 编码的 AND、锁存器 next 函数、输出按 HWMCC 坏信号解释）；BTOR2 模型从字级位爆破（sort、常量、带 init/next 的状态、bad/constraint/output 及算术/逻辑算子核心）。SAT 核心是真正的 CDCL 求解器——双监视文字、首 UIP 回跳子句学习、活性分支与重启——与 cvc5/Z3 内核同族的算法，教学级规模。安全引擎：BMC 找最短反例并给完整输入/状态轨迹；k-归纳加唯一状态约束以抓住朴素归纳漏掉的不变式；插值引擎从反驳结构导出候选 Craig 插值，再由独立 SAT 调用复核每个候选后才称之为不变式——未通过复核的候选绝不作为不变式报告；IC3-lite 维护逐帧阻塞立方并由 k-归纳收尾。规模建议：位宽 ≤ 16、界 ≤ 30 可保持交互式响应。

## 输入项

- **模型来源** (select)
- **模型文本（粘贴时）** (textarea): (set-logic QF_BV) (assert ...) (check-sat) | aag M I L O A ... | 1 sort bitvec 8 ...
- **验证引擎** (select)
- **BMC / 归纳的界 k（1–30）** (number): 10

## 适用场景

- 在无需安装本地求解器环境的情况下，快速验证位向量（QF_BV）逻辑公式的可满足性。
- 对 BTOR2 或 AIGER 格式的硬件顺序电路进行有界模型检测并提取违规反例见证轨迹。
- 对比 k-归纳、Craig 插值与 IC3/PDR-lite 算法在状态机不变式证明中的效率与判定结果。

## 工作原理

- 解析 SMT-LIB 2.7 脚本、AIGER 电路或 BTOR2 字级模型，并将位向量运算与状态转移关系通过 Tseitin 变换进行位爆破（Bit-blasting）。
- 配置目标验证引擎（BMC、k-归纳、Craig 插值、IC3/PDR-lite 或全引擎对比）并设定展开界深度 k。
- 底层自研 CDCL SAT 核心执行双监视文字传播、VSIDS 启发式分支、1-UIP 子句学习与重启，完成公式求解或逐帧阻塞。
- 生成可视化 HTML 报告，输出 SAT/UNSAT 裁定、求解器决策与冲突统计数据，并在存在安全违规时展示完整的状态轨迹。

## 使用案例

- 形式化逻辑教学与算法演示，直观展示 CDCL、BMC 与 k-归纳在硬件模型检测中的工作机理。
- 硬件设计中的状态机与计数器验证，在有限周期内排查不可达安全属性的违规反例。
- 位向量算术等价性证明，验证复杂逻辑表达式或位级变换在所有输入组合下的正确性。

## 常见问题

### 运行该形式验证工具是否需要安装本地 Z3 或 cvc5 求解器？

不需要，整个验证栈与 CDCL SAT 求解核心均基于 TypeScript 实现并在浏览器端本地运行。

### 支持哪些模型输入格式与逻辑理论？

支持 SMT-LIB 2.7（QF_BV 理论与 Bool 核心）、AIGER（ASCII aag 及二进制 aig）和字级 BTOR2 格式。

### 工具推荐的模型规模与位宽是多少？

为保持网页交互的流畅响应，建议位向量位宽控制在 16 位以内，展开界深度 k 保持在 30 以内。

### Craig 插值引擎是如何确保不变式正确性的？

从反驳结构导出候选插值后，引擎会发起独立的 SAT 调用进行复核，未通过认证的候选绝不会作为不变式报告。

### 当 BMC 发现属性违规时会输出什么？

系统会判定为 UNSAFE，并生成包含输入激励与每一步锁存器状态的完整反例见证轨迹（Witness Trace）。

## 相关工具

- [JavaScript反混淆器](https://elysiatools.com/zh/tools/javascript-deobfuscator): 反混淆和分析混淆的JavaScript代码，提高可读性和理解性
- [Markdown链接提取器](https://elysiatools.com/zh/tools/markdown-link-extractor): 从Markdown文档中提取内联链接、引用链接和纯URL，并进行基本语法验证
- [流派分类器 AI](https://elysiatools.com/zh/tools/genre-classifier-ai): 用实测证据为音轨分类流派：GTZAN 纹理特征 + 节拍网格脉冲形态 + 频段平衡 + 调性 + 动态，输出前三排名与每项选择的理由。
- [PCIe 链路训练 LTSSM 与 Lane Margining 眼图解码器](https://elysiatools.com/zh/tools/pcie-link-training-linkstate-and-lane-margining-eye-decode): 解析 PCIe 链路训练日志(LTSSM 状态序列 + TS1/TS2 有序集),输出 Gen1-Gen6 全代次状态时间线、协商速率/宽度、速率标识位解码、通道反转与极性反转、均衡相位及 Detect/Recovery 重启诊断;并对 pcilmr 通道裕量报告按 Base Spec §8.4.2 逐代际判级,绘制逐通道眼图裕量热力图 SVG。
- [播客章节标记生成器（ID3 / Podcasting 2.0）](https://elysiatools.com/zh/tools/podcast-chapter-marker-builder): 粘贴时间码章节列表，一次生成全部交付格式：Podcasting 2.0 章节 JSON（v1.2.0）与 RSS podcast:chapters 标签、可选把 ID3v2.4 CHAP+CTOC 章节帧直接烧入上传的 MP3（毫秒为普通大端 uint32、偏移 0xFFFFFFFF、每章嵌 TIT2 子帧、保留原有标签帧）、Vorbis CHAPTER001 注释对（OGG/Opus）、mp4chaps 文本、YouTube 说明栏时间戳块与 SRT 副车文件，并附各播放器真实支持情况（Apple 自 2025 起支持 RSS JSON；Pocket Casts/Overcast 仅读内嵌 ID3；Spotify 两者都不读）。
- [训练/测试集分层切分器](https://elysiatools.com/zh/tools/train-test-split-with-stratification): 读取 CSV/JSON 数据集,按目标列做分层抽样的 train/validation/test 切分(默认 70/15/15,随机种子可复现),或分层 k 折交叉验证;输出每折类别分布报告与偏差条、重复行泄漏检查、SMOTE 过采样预览(仅在训练折上做最近邻插值),并可导出各折 CSV 为 ZIP。
- [User-Agent解析器](https://elysiatools.com/zh/tools/user-agent-parser): 解析和分析User-Agent字符串，提取浏览器、操作系统、设备和引擎信息
- [变更记录提取器](https://elysiatools.com/zh/tools/changelog-extractor): 解析并从多种格式的变更记录和发行说明中提取结构化数据

## 示例

- [Web Python 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-python): Web Python 图像处理示例，使用 PIL/Pillow 包括读取、保存、缩放和格式转换
- [Android Java 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-java): Android Java 图像处理示例，包括图像读取保存、缩放和格式转换
- [Android Kotlin 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-kotlin): Android Kotlin 图像处理示例，包括图像读取保存、缩放和格式转换
- [Web Rust 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-rust): Web Rust 图像处理示例，包括图像读取保存、缩放和格式转换
