Download presentation
Presentation is loading. Please wait.
1
第 4 章 抽象解释 内容概述 以一种独立于编程语言的方式,介绍抽象解释的 一些本质概念 – 将 “ 程序分析对语言语义是正确的 ” 这个概念公式 化 – 用 “ 加宽和收缩技术 ” 来获得最小不动点的较好的 近似,并使所需计算步数得到限制 – 用 “ 伽罗瓦连接和伽罗瓦插入 ” 来把代价较大的属 性空间用代价较小的属性空间来代替 – 伽罗瓦连接可以通过一种系统的方式来构造,可 用来从一种分析的规范导出另一种分析的规范
2
第 4 章 抽象解释 内容概述 用 “ 伽罗瓦连接和伽罗瓦插入 ” 来把代价较大的属 性空间用代价较小的属性空间来代替 – 有时,属性完全格 L 上的计算代价太大,甚至不 可计算,因此需用较简单的完全格 M 来代替 L – 必须有一种用 M 来描述 L 的方法,并将采用 M 的 分析替代采用 L 的分析 – 伽罗瓦连接和伽罗瓦插入是用来表达程序的属性 空间 L 、属性空间 M 之间联系的一种工具
3
第 4 章 抽象解释 抽象解释 – 在程序静态分析中,用于构造和逼近程序不动点 语义的理论 – 使用抽象对象域上的计算抽象来逼近程序指称的 具体对象域上的计算,使得程序抽象执行的结果 能够反映出程序真实运行的部分信息 – 本质上是在计算效率和计算精度之间取得均衡, 以损失计算精度来求得计算的可行性,再通过迭 代计算来增强计算精度
4
第 4 章 抽象解释 4.1 节 将 “ 程序分析对语言的语义是正确的 ” 这个 概念公式化 方式 1 :正确性关系 –R : V L {true, false} – 正确性标准: R 在程序计算过程中保持 – 可接受的正确性关系增加两个条件 1 、属性值 l 越小(偏序)越精确 2 、存在描述一个值 v 的最好属性值 l
5
第 4 章 抽象解释 4.1 节 将 “ 程序分析对语言的语义是正确的 ” 这个 概念公式化 方式 2 :表示函数 – : V L , 将 v 映射到表示它的最好属性值 l 两种方式之间的等价 – 从 可以定义相关的可接受 R – 从可接受 R 可以定义相关的
6
第 4 章 抽象解释 4.1 节 将 “ 程序分析对语言的语义是正确的 ” 这个 概念公式化 举例 – 数据流分析:常量传播 – 控制流分析:运行时变量所指称的函数 适度的推广 – 语言语义:程序参数和结果属于不同的论域 – 程序属性:描述它们的属性则也属于不同的论域 – 正确性关系:相应地,由两个关系 R 1 和 R 2 组成 – 表示函数:相应地,由两个表示函数 1 和 2 组成
7
第 4 章 抽象解释 4.2 节 用加宽和收缩技术来获得最小不动点的较好 近似,并使所需计算步数得到限制 加宽算子 – 上界算子 上界算子作用到一个序列,得到一个上升序列 – 加宽算子 1 、对上升序列加宽得到的序列能够稳定 2 、对单调函数 f 的迭代序列 (f n ( )) n ,用加宽算 子加宽后得到的序列会稳定,并且 lfp(f )
8
第 4 章 抽象解释 4.2 节 用加宽和收缩技术来获得最小不动点的较好 近似,并使所需计算步数得到限制 收缩算子 – 受 f (lfp (f)) lfp (f) 的启发 – 注意,收缩算子并不是一个下界算子 – 对下降序列收缩得到的序列能够稳定,稳定后的 值 lfp(f )
9
第 4 章 抽象解释 4.3 节 伽罗瓦连接和伽罗瓦插入是表达程序的属 性空间 L 和属性空间 M 之间联系的一种工具 L 和 M 的例子 (P(Z), ), (Interval, ), (Range, ), (P(Sign), ) 伽罗瓦连接的定义 – 抽象函数和具体函数 – 它们以及它们的复合要满足的性质 1 、一种表示方式称为伽罗瓦连接 2 、另一种表示方式称为 adjunction
10
第 4 章 抽象解释 4.3 节 伽罗瓦连接和伽罗瓦插入是表达程序的属 性空间 L 和属性空间 M 之间联系的一种工具 伽罗瓦连接的定义 – 抽象函数 和具体函数 – 它们以及它们的复合要满足的性质 1 、一种表示方式称为伽罗瓦连接 2 、另一种表示方式称为 adjunction – 用表示函数 来定义伽罗瓦连接 – 用抽取函数 来定义伽罗瓦连接
11
第 4 章 抽象解释 4.3 节 Additive function – f(l 1 1 l 2 ) = f(l 1 ) 2 f(l 2 ) Multiplicative function – f(l 1 1 l 2 ) = f(l 1 ) 2 f(l 2 ) Complete additive – f( 1 Y ) = 2 { f(l) | l Y } Complete multiplicative – f( 1 Y ) = 2 { f(l) | l Y }
12
第 4 章 抽象解释 4.3 节 伽罗瓦连接和伽罗瓦插入是表达程序的属 性空间 L 和属性空间 M 之间联系的一种工具 伽罗瓦连接的性质 – 这些性质用来证明了,采用了 (P(Sign), ) ,则不 用 (Interval, ) 的原因(改用 (Range, ) ) 伽罗瓦连接是正确的概念 –V 和 L 间可接受正确性关系 + L 和 M 间伽罗瓦连接 V 和 M 间可接受正确性关系
13
第 4 章 抽象解释 4.3 节 伽罗瓦连接和伽罗瓦插入是表达程序的属 性空间 L 和属性空间 M 之间联系的一种工具 伽罗瓦插入 – 因为 M 比 L 粗略,因此 L 的若干个元素很可能都由 M 的某个元素描述,且 M 不应该有多余的元素 – 这样的伽罗瓦连接称为伽罗瓦插入 – 伽罗瓦插入的性质(新增性质) 具体函数 一定是内射的 抽象函数 一定是满射的
14
第 4 章 抽象解释 4.3 节 伽罗瓦连接和伽罗瓦插入是表达程序的属 性空间 L 和属性空间 M 之间联系的一种工具 压缩算子 – 用来从伽罗瓦连接构造伽罗瓦插入 – 将伽罗瓦连接的具体函数 改造为内射函数 – 可以用规范伽罗瓦连接的抽取函数 来定义压缩 算子
15
第 4 章 抽象解释 4.4 节 伽罗瓦连接可按一种系统的方式来构造,从使用 较简单属性的程序分析得到使用复杂属性的分析 函数复合(顺序复合) – 两个伽罗瓦连接的复合仍然是一个伽罗瓦连接 属性二元组 – 独立属性方法: P(L 1 ) P(L 2 ) – 相关属性方法: P(L 1 L 2 ) 独立属性方法会丢失精度
16
第 4 章 抽象解释 4.4 节 伽罗瓦连接可按一种系统的方式来构造,从使用 较简单属性的程序分析得到使用复杂属性的分析 函数空间 – 全函数空间 – 单调函数空间 同时完成不同性质的分析 – 直积(独立属性方法) – 直接张量积(使用相关属性方法)
17
第 4 章 抽象解释 4.4 节 伽罗瓦连接可按一种系统的方式来构造,从使用 较简单属性的程序分析得到使用复杂属性的分析 将直积压缩 – 被压缩的直积(成为伽罗瓦插入) – 被压缩的直接张量积(成为伽罗瓦插入)
18
第 4 章 抽象解释 4.5 节 试图用在时间、空间或终止性行为上更好的 近似计算来取代一种计算时,伽罗瓦连接是 有用的 – 使用 M 的分析被用来取代使用 L 的分析 –M 的使用是为获得 L 中最小不动点计算的较好近 似 导出运算 – 沿抽象函数的诱导 – 沿具体函数的诱导
19
第 4 章 抽象解释 4.5 节 试图用在时间、空间或终止性行为上更好的 近似计算来取代一种计算时,伽罗瓦连接是 有用的 沿抽象函数的诱导 – 从一个分析函数和两个伽罗瓦连接诱导出来 – 导出分析中的不动点:从 M 上不动点的计算来得 到 L 上不动点的一个近似
20
第 4 章 抽象解释 4.5 节 试图用在时间、空间或终止性行为上更好的 近似计算来取代一种计算时,伽罗瓦连接是 有用的 在数据流分析中的应用 – 单调框架的推广(不要求满足上升链条件、不要 求迁移函数空间是由所有单调函数构成的空间) – 实例 A 和 B :它们迁移函数之间的区别和联系 – 它们解之间的联系 – 例子:状态集合分析和常量传播分析之间的联系
21
第 4 章 抽象解释 4.5 节 试图用在时间、空间或终止性行为上更好的 近似计算来取代一种计算时,伽罗瓦连接是 有用的 沿具体函数的诱导 – 用另一种方式来获得最小不动点的近似
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.