内容来自南京大学李樾、谭添(PASCAL小组)的软件分析。所有lab、ppt、授课视频均公开,详细请查看课程主页。
目录
莱斯定理
定义:
Any nontrivial property about the language recognized by a Turing machine is undecidable.
递归可枚举语言的任何非平凡的性质,都是不可判定的。
平凡(trivial)性质:所有程序都有的,或者都没有的性质
非平凡性质:某些程序才有,某些程序没有。比如程序有没有内存泄漏、程序能不能被优化。
不可判定:不能找到一个完备的算法来判定一个程序是否有某个性质。
完备:同时满足 complete 和 sound。
complete:允许漏报,和正确结果的差集的属于false negatives
sound:允许误报,和正确结果的差集的属于false positives
莱斯定理说明的事实:完美的算法并不存在,但是可以接近完美的算法;莱斯定理和图灵停机问题有一定的相似之处。
抽象和保守估计
Abstraction
Over-approximation
Transfer function:转移函数
Controll flow:控制流