闭卷重建为什么测试不能代替证明的对象、公式、算例、算法与失败边界。
形式化方法与程序验证 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷重建系统、模型与真实世界三层的对象、公式、算例、算法与失败边界。
闭卷重建安全性、活性与公平性的对象、公式、算例、算法与失败边界。
闭卷重建前置条件、后置条件与框架条件的对象、公式、算例、算法与失败边界。
闭卷重建部分正确与完全正确的对象、公式、算例、算法与失败边界。
闭卷重建可信计算基与证明边界的对象、公式、算例、算法与失败边界。
闭卷重建反例驱动与可复现验证的对象、公式、算例、算法与失败边界。
对象:形式化工具验证的是模型满足规约;模型与实现、规约与需求仍需独立确认。;公式:Reality≈Implementation≈Model ⊨ Spec≈Need。;算例:模型漏掉时钟溢出,即使模型证明安全也不能覆盖真实溢出故障。;边界:把模型正确直接等同产品正确;默认编译器和硬件可信。。
对象:测试观察有限执行;证明在模型与假设内覆盖所有允许输入和执行。;公式:tests⊂behaviors,proof:∀x∈Pre,Post(run(x))。;算例:输入域有1000个值只测100个,直接覆盖率10%,仍有900个未观察。;边界:把100%分支覆盖说成无错误;规约遗漏时证明仍可能通过。。
对象:契约分别限定合法调用、返回后性质以及哪些状态允许改变。;公式:{P} C {Q},frame: unchanged(outside M)。;算例:数组非空为P;返回最大元素且属于数组为Q;数组内容不变为frame。;边界:只写返回值范围不写与输入关系;漏写副作用。。
对象:安全性说坏事永不发生;活性说好事最终发生;活性常依赖调度公平。;公式:Safety:□¬bad;Liveness:◇good。;算例:互斥是□¬(crit1∧crit2);请求最终响应是□(req→◇resp)。;边界:用有限测试证明“最终”;活性成立却允许同时进入临界区。。
对象:验证结论依赖解析器、内核、求解器证书检查器、编译器和硬件等TCB。;公式:trust_total=∪ trusted_components。;算例:证明器内核3万行、编译器10万行,简单代码行数代理13万。;边界:宣称“机器证明绝对正确”;求解器unknown被当valid。。
对象:部分正确只保证若终止则后置成立;完全正确还要证明终止。;公式:Total={P}C{Q} ∧ terminates(C,P)。;算例:while true不返回,任意后置的部分正确可真,但完全正确为假。;边界:把无反例当终止证明;整数下界未写。。
对象:失败结果必须能还原输入、状态路径、调度、模型和工具版本。;公式:counterexample=s0→s1→…→bad。;算例:路径5次转移含6个状态;首个违反在第4次转移后状态s4。;边界:只保存“验证失败”截图;模型反例无法映射源代码。。