Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 3 章 控制流分析 内容概述 – 定义一个函数式编程语言,变量可以指称函数 – 以 dynamic dispatch problem 为例(作为参数的 函数被调用时,究竟执行的是哪个函数) – 规范该控制流分析问题,定义什么是可接受的控 制流分析 – 定义可接受分析在语义模型上的可靠性 – 讨论分析算法.

Similar presentations


Presentation on theme: "第 3 章 控制流分析 内容概述 – 定义一个函数式编程语言,变量可以指称函数 – 以 dynamic dispatch problem 为例(作为参数的 函数被调用时,究竟执行的是哪个函数) – 规范该控制流分析问题,定义什么是可接受的控 制流分析 – 定义可接受分析在语义模型上的可靠性 – 讨论分析算法."— Presentation transcript:

1 第 3 章 控制流分析 内容概述 – 定义一个函数式编程语言,变量可以指称函数 – 以 dynamic dispatch problem 为例(作为参数的 函数被调用时,究竟执行的是哪个函数) – 规范该控制流分析问题,定义什么是可接受的控 制流分析 – 定义可接受分析在语义模型上的可靠性 – 讨论分析算法 – 加上数据流分析 – 加上上下文信息

2 第 3 章 控制流分析 函数的不动点 – 若 f(x) = x ,则 x 是函数 f 的不动点 – 求解含函数变量 f 的方程 f = n. if n=0 then 1 else n  f(n  1) end – 看成找下面函数的不动点 f. n. if n=0 then 1 else n  f(n  1) end – 该函数只有唯一的不动点 阶乘函数

3 第 3 章 控制流分析 函数的最小不动点 – 求解含函数变量 f 的方程 f = n. if n=0 then 1 else if n = 1 then f(3) else f(n  2) end – 相应高阶函数有无数个不动点 当 n 是偶数时,结果是 1 当 n 是奇数时,结果是 a ( a 可以任取 ) – 最小不动点 n 为偶数时, 结果是 1; n 为奇数时, 结果未定义

4 第 3 章 控制流分析 函数最小不动点的计算 – 例: F  f. n. if n=0 then 1 else n  f(n  1) end –lfp(F) =  F n (  )(n = 0, 1, …) –F 0 (  ) =  ( 表示处处无定义的函数 ) –F 1 (  ) = F(F 0 (  )) = ( f. n. if n = 0 then 1 else n  f(n  1) end )  = n. if n = 0 then 1 else n   (n  1) end = {  0, 0!  }

5 第 3 章 控制流分析 函数最小不动点的计算 – 例: F  f. n. if n=0 then 1 else n  f(n  1) end –lfp(F) =  F n (  )(n = 0, 1, …) –F 2 (  ) = F(F 1 (  )) =( f. n. if n=0 then 1 else n  f(n  1)end)F 1 (  ) = n. if n = 0 then 1 else n  F 1 (  ) (n  1) end = {  0, 0! ,  1, 1!  } – 依次逐步计算可得: , {  0, 0!  }, {  0, 0! ,  1, 1!  }, {  0, 0! ,  1, 1! ,  2, 2!  }, … ( 构成一个上升链 ) –lfp(F) =  F n (  ) = {  0, 0! ,  1, 1! ,  2, 2! , …}

6 第 3 章 控制流分析 归纳和余归纳 (coinduction) 归纳法 – 初始条件、迭代规则、最小化条件 – 字母表 A 上的串集 A  归纳定义如下 (1)  A  ; (2) 若 a  A 且 x  A , 则 ax  A  ;(3) 除此以 外, A  不含其它元素 余归纳法 – 迭代规则 ( 循环条件 ) ,最大化条件 – 流可以通过余归纳法来定义 (1) 若 t 是 A 上的流且 a  A ,则 (a,t) 也是 A 上的流; (2) A 上的流集是满足上述规则的最大集合


Download ppt "第 3 章 控制流分析 内容概述 – 定义一个函数式编程语言,变量可以指称函数 – 以 dynamic dispatch problem 为例(作为参数的 函数被调用时,究竟执行的是哪个函数) – 规范该控制流分析问题,定义什么是可接受的控 制流分析 – 定义可接受分析在语义模型上的可靠性 – 讨论分析算法."

Similar presentations


Ads by Google