跳到正文
ZLIB × LEAN / 算法精读与验证

算法精读与形式化验证

先展开具体实现,再连接每一步的论证。

一次压缩任务,从调用者提供的字节开始。窗口与匹配生成符号,编码器把符号写成比特,解码器沿相反方向恢复字节;缓冲区可能在任意一次调用后更换,分配也可能失败。

证明沿着这些实际对象前进:先精读一个组件的算法、布局和优化,再说明它需要建立的关系,以及关系怎样交给下一个组件。每个主题的最后一章集中讲证明思路,可以与前面的算法互相跳转。

ZLIB / 全局机制图

压缩与解压的全局地图

先看每个组件负责什么,再进入算法或证明。悬停、聚焦或点选节点,查看它的输入、输出和阅读入口。

原始字节符号编码压缩流恢复的字节
编码块的主要数据流共同机制的支持与约束stored 块直接存放原文字节
任务中的对象论证连接
输入与符号匹配产生的符号展开为已接受的输入。
编码与解码实际输出满足独立格式关系,解码产生相同字节。
调用前后状态每个合法返回留下可接续的状态,精确记录消费与交付。
活的内存与资源访问合法、无关对象保持不变,分配与释放精确配对。
01 / 3 章

窗口与匹配 ↗

重复片段的长度与距离从哪里来,以及为什么只需保留近期字节。

02 / 3 章

Huffman 编码构造 ↗

让常见符号占更少比特,并让解码端重建同一套编码。

03 / 4 章

块与压缩输出 ↗

把选好的符号写成压缩块,并安全交给调用者。

04 / 4 章

位输入、解码表与复制 ↗

读取压缩字节、识别符号,并恢复出原来的数据。

05 / 3 章

流式状态与封装 ↗

理解同一任务为什么需要多次调用,以及暂停后怎样继续。

06 / 3 章

状态操作与资源生命周期 ↗

开始、复用、复制和结束任务,同时处理分配失败。

07 / 3 章

校验和与组合 ↗

在分批处理时核对数据,并保留支持序列合并的信息。

08 / 4 章

应用接口与外部交互 ↗

为完整缓冲区、回调和 gzip 文件选择合适的调用方式。

命题、实现与接受范围

章节分别标明算法解读、局部已给出的结论和仍需组合的义务。完整命题、调用者前提与 Lean 正文可以继续查阅;项目进度页统一记录接受范围与剩余工作。

完整目标与调用序列 ↗翻译与模型边界 ↗项目进度 ↗
ZLIB × LEAN

全局目录

当前位置算法精读与形式化验证