Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 4 章 抽象解释 内容概述 以一种独立于编程语言的方式,介绍抽象解释的 一些本质概念 – 将 “ 程序分析对语言语义是正确的 ” 这个概念公式 化 – 用 “ 加宽和收缩技术 ” 来获得最小不动点的较好的 近似,并使所需计算步数得到限制 – 用 “ 伽罗瓦连接和伽罗瓦插入 ” 来把代价较大的属 性空间用代价较小的属性空间来代替.

Similar presentations


Presentation on theme: "第 4 章 抽象解释 内容概述 以一种独立于编程语言的方式,介绍抽象解释的 一些本质概念 – 将 “ 程序分析对语言语义是正确的 ” 这个概念公式 化 – 用 “ 加宽和收缩技术 ” 来获得最小不动点的较好的 近似,并使所需计算步数得到限制 – 用 “ 伽罗瓦连接和伽罗瓦插入 ” 来把代价较大的属 性空间用代价较小的属性空间来代替."— Presentation transcript:

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 节 试图用在时间、空间或终止性行为上更好的 近似计算来取代一种计算时,伽罗瓦连接是 有用的 沿具体函数的诱导 – 用另一种方式来获得最小不动点的近似


Download ppt "第 4 章 抽象解释 内容概述 以一种独立于编程语言的方式,介绍抽象解释的 一些本质概念 – 将 “ 程序分析对语言语义是正确的 ” 这个概念公式 化 – 用 “ 加宽和收缩技术 ” 来获得最小不动点的较好的 近似,并使所需计算步数得到限制 – 用 “ 伽罗瓦连接和伽罗瓦插入 ” 来把代价较大的属 性空间用代价较小的属性空间来代替."

Similar presentations


Ads by Google