第3章 控制流分析 内容概述 定义一个函数式编程语言,变量可以指称函数

Slides:



Advertisements
Similar presentations
1 、谁能说说什么是因数? 在整数范围内( 0 除外),如果甲数 能被乙数整除,我们就说甲数是乙数的 倍数,乙数是甲数的因数。 如: 12÷4=3 4 就是 12 的因数 2 、回顾一下,我们认识的自然数可以分 成几类? 3 、其实自然数还有一种新的分类方法, 你知道吗?这就是我们今天这节课的学.
Advertisements

3 的倍数的特征 的倍数有 : 。 5 的倍数有 : 。 既是 2 的倍数又是 5 的倍数有 : 。 12 , 18 , 20 , 48 , 60 , 72 , , 25 , 60 ,
學校日簡報 ~ 608 ( 六下 ) 歡迎各位家長! 報告者:黃怡萍老師. 主題一 : 滿滿的感謝 一年多來感謝家長們的支持與鼓勵,使班 務運作順利,親師生溝通良好;六年級下 學期是貴子弟國小生涯的最後一階段,時 間雖然短暫,但老師也擬定最後衝刺的目 標,希望親師生三方持續合作,讓我們愉 快的度過每一天。
一、 一阶线性微分方程及其解法 二、 一阶线性微分方程的简单应用 三、 小结及作业 §6.2 一阶线性微分方程.
目录 上页 下页 返回 结束 习题课 一、导数和微分的概念及应用 二、导数和微分的求法 导数与微分 第二章.
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
第八章 第四节 机动 目录 上页 下页 返回 结束 一个方程所确定的隐函数 及其导数 隐函数的微分法.
2.6 隐函数微分法 第二章 第二章 二、高阶导数 一、隐式定义的函数 三、可微函数的有理幂. 一、隐函数的导数 若由方程 可确定 y 是 x 的函数, 由 表示的函数, 称为显函数. 例如, 可确定显函数 可确定 y 是 x 的函数, 但此隐函数不能显化. 函数为隐函数. 则称此 隐函数求导方法.
§4.2 第一换元积分法 课件制作 秦立春 引 例 第一换元积分法. §4.2 第一换元积分法 课件制作 秦立春 以上三式说明:积分公式中积分变可以是任意的字母公式仍然成立.
2.5 函数的微分 一、问题的提出 二、微分的定义 三、可微的条件 四、微分的几何意义 五、微分的求法 六、小结.
全微分 教学目的:全微分的有关概念和意义 教学重点:全微分的计算和应用 教学难点:全微分应用于近似计算.
2.3 函数的微分. 四川财经职业学院 课前复习 高阶导数的定义和计算方法。 作业解析:
第三节 微分 3.1 、微分的概念 3.2 、微分的计算 3.3 、微分的应用. 一、问题的提出 实例 : 正方形金属薄片受热后面积的改变量.
2 、 5 的倍数的特征 玉田百姓. 1 、在 2 、 3 、 5 、 8 、 10 、 12 、 25 、 40 这几个数中, 40 的因数有几个? 5 的倍数有几个? 复习: 2 、在 6 、 10 、 12 、 15 、 18 、 20 这几个数中,哪些数 是 2 的倍数?哪些数是 5 的倍数?
因数与倍数 2 、 5 、 3 的倍数的特 征 新人教版五年级数学下册 执教者:佛山市高明区明城镇明城小学 谭道芬.
人教新课标 四年级语文下册 第四组 一个中国孩子的呼声.
请说出牛顿第一定律的内容。.
台大體育概況及課程大綱 黃欽永 教授 台灣大學體育室.
第三章 函数逼近 — 最佳平方逼近.
提升时间管理.
例题 教学目的: 微积分基本公式 教学重点: 牛顿----莱布尼兹公式 教学难点: 变上限积分的性质与应用.
一、原函数与不定积分 二、不定积分的几何意义 三、基本积分公式及积分法则 四、牛顿—莱布尼兹公式 五、小结
数 学 分 析 第九章 定积分 第二节 微积分学基本公式 主讲:师建国.
第六章 微分与不定积分 第三节 不定积分.
第四章 函数的积分学 第六节 微积分的基本公式 一、变上限定积分 二、微积分的基本公式.
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
定积分习题课.
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
第二章 导数与微分 第二节 函数的微分法 一、导数的四则运算 二、复合函数的微分法.
2-7、函数的微分 教学要求 教学要点.
                                        導師健康關懷 健康是一輩子的事 義守大學衛生保健組 關心您.
第5章 §5.3 定积分的积分法 换元积分法 不定积分 分部积分法 换元积分法 定积分 分部积分法.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
计算机数学基础 主讲老师: 邓辉文.
§2 求导法则 2.1 求导数的四则运算法则 下面分三部分加以证明, 并同时给出相应的推论和例题 .
模型验证器VERDS Wenhui Zhang 31 MAY 2011.
动态规划(Dynamic Programming)
皇帝的新装 知识窗口 整体感知 合作探究 总结提高 创新发展. 皇帝的新装 知识窗口 整体感知 合作探究 总结提高 创新发展.
导数的应用 ——函数的单调性与极值.
第一章 函数与极限.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
§4 谓词演算的性质 谓词逻辑Pred(Y)。 是Y上的关于类型 {F,→,x|xX}的自由代数 赋值 形式证明
概 率 统 计 主讲教师 叶宏 山东大学数学院.
离散数学─归纳与递归 南京大学计算机科学与技术系
第4章 Excel电子表格制作软件 4.4 函数(一).
正切函数的图象和性质 周期函数定义: 一般地,对于函数 (x),如果存在一个非零常数T,使得当x取定义域内的每一个值时,都有
定理21.9(可满足性定理)设A是P(Y)的协调子集,则存在P(Y)的解释域U和项解释,使得赋值函数v(A){1}。
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
函 数 连 续 的 概 念 淮南职业技术学院.
1.2 子集、补集、全集习题课.
1.设A和B是集合,证明:A=B当且仅当A∩B=A∪B
第一节 不定积分的概念与性质 一、原函数与不定积分的概念 二、不定积分的几何意义 三、基本积分表 四、不定积分的性质 五、小结 思考题.
第三章 函数的微分学 第二节 导数的四则运算法则 一、导数的四则运算 二、偏导数的求法.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
学习任务三 偏导数 结合一元函数的导数学习二元函数的偏导数是非常有用的. 要求了解二元函数的偏导数的定义, 掌握二元函数偏导数的计算.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
2019/5/20 第三节 高阶导数 1.
正弦、余弦函数的性质 华容一中 伍立华 2017年2月24日.
§2 方阵的特征值与特征向量.
幂 函 数.
第三节 函数的微分 3.1 微分的概念 3.2 微分的计算 3.3 微分的应用.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
第四章 函数的 积分学 第七节 定积分的换元积分法     与分部积分法 一、定积分的换元积分法 二、定积分的分部积分法.
淺析「標槍運動」技術 指導老師 : 林新龍博士 研究生 : 侯曉寧.
三角 三角 三角 函数 余弦函数的图象和性质.
离散数学─归纳与递归 南京大学计算机科学与技术系
第二次课后作业答案 函数式编程和逻辑式编程
一元一次方程的解法(-).
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
Presentation transcript:

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

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

第3章 控制流分析 函数的最小不动点 求解含函数变量f 的方程 f = n. if n=0 then 1 第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为奇数时, 结果未定义

第3章 控制流分析 函数最小不动点的计算 例:F   f. n. if n=0 then 1 else n  f(n  1) end lfp(F) =  Fn () (n = 0, 1, …) F0 () =  (表示处处无定义的函数) F1 () = F(F0 ()) = ( 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!}

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

第3章 控制流分析 Tarski定理 令F : P(U)  P(U)是单调函数 其中U是集合,P(U)表示U的幂集 集合XU是F封闭的 第3章 控制流分析 Tarski定理 令F : P(U)  P(U)是单调函数 其中U是集合,P(U)表示U的幂集 集合XU是F封闭的 当且仅当F(X) X 集合XU是F致密的 当且仅当X  F(X) 定义X.F(X)和X.F(X) X.F(X) =  {X | F(X)  X} X.F(X) =  {X | X  F(X)}

第3章 控制流分析 Tarski定理 集合XU是F封闭的 当且仅当F(X) X 集合XU是F致密的 当且仅当X  F(X) 第3章 控制流分析 Tarski定理 集合XU是F封闭的 当且仅当F(X) X 集合XU是F致密的 当且仅当X  F(X) 定义X.F(X)和X.F(X) X.F(X) =  {X | F(X)  X} X.F(X) =  {X | X  F(X)} 引理 X.F(X)是最小的F封闭集合 X.F(X)是最大的F致密集合

第3章 控制流分析 Tarski定理 根据对偶性,只证明一种情况。首先证明引理: 第3章 控制流分析 Tarski定理 根据对偶性,只证明一种情况。首先证明引理: X.F(X) =  {X | X  F(X)}是最大F致密集合 最大是明显的 证明每个Xi都F致密,则i Xi也F致密则可 因为对每个i有Xi  F(Xi),则i Xi  i F(Xi) 因为F单调,则对每个i有F(Xi)  F(i Xi) 由此可得iF(Xi)  F(i Xi) 由传递性,i Xi  F(i Xi),即i Xi是F致密的

第3章 控制流分析 Tarski定理 再证明本定理(仍只证明 一种情况): 1、X.F(X)是F的最小不动点 第3章 控制流分析 Tarski定理 再证明本定理(仍只证明 一种情况): 1、X.F(X)是F的最小不动点 2、X.F(X)是F的最大不动点 令 = X.F(X),则是致密的,  F() 由单调性,F()  F(F()),则F()也致密 由的定义知道F()   由和F()之间的这两个不等式得 = F() 不动点都是致密的,因而都包含在中,所以是最大不动点

第3章 控制流分析 归纳和余归纳(coinduction) 归纳法 初始条件、迭代规则、最小化条件 字母表A上的串集A归纳定义如下 第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上的流集是满足上述规则的最大集合

第3章 控制流分析 大步操作语义和小步操作语义的区别 大步操作语义 小步操作语义 S1,   1 S2, 1  2 第3章 控制流分析 大步操作语义和小步操作语义的区别 大步操作语义 小步操作语义 S1,   1 S2, 1  2 S1; S2,   2 S1,   S1,   S1; S2,   S1; S2,  S1,    S1; S2,   S2, 

第3章 控制流分析 规范s和的区别 s和的区别主要在子句[fn]、[fun]和[app]上 第3章 控制流分析 规范s和的区别 s和的区别主要在子句[fn]、[fun]和[app]上  的这些子句体现为跟踪运行情况的0-CFA分析:某个函数不被执行,则其体中信息不被收集 因递归函数会引起检查过程不终止,导致讨论余归纳和最大不动点 s 是一种语法制导的0-CFA分析,它从程序中所有函数获取信息,而不管运行时函数是否真正被 执行,因此它是所获信息的一种近似 对于e : ((fn x => x) (fn y => let z = fn … in …)) (C, )  e中的无需 z 的信息

第3章 控制流分析 约束求解(对照P68的算法) Step 1 初始化 所有的C(l)和r(x)都是图的结点q 第3章 控制流分析 约束求解(对照P68的算法) Step 1 初始化 所有的C(l)和r(x)都是图的结点q D[q]表示q的值(函数集合),初值是空集 E[q]表示q和其它结点的联系,初值是空链表 Step 2 构造图(对照P69的表和P70的初值) {t}  p: 出现在函数定义规则中,t应该在p所表示的函数集合中 p1  p2:出现在变量、条件表达式和let子句等规则中,记录于E[p1],因p1变化则p2也可能变化

第3章 控制流分析 约束求解(对照P68的算法) Step 2 构造图 第3章 控制流分析 约束求解(对照P68的算法) Step 2 构造图 {t}  p  p1  p2:出现在函数应用规则中,记录于E[p1]和E[p],因p1和p变化则p2也可能变化 Step 3 迭代(对照P70的表) p1  p2:D[p1]并入D[p2]中,若(D[p1]  D[p2]) {t}  p  p1  p2:条件{t}  p成立,则D[p1]并入D[p2]中,若(D[p1]  D[p2]) P70第2列,E[C(4)]中的函数应用引起 P70第3列,E[r(x)]中,实参是函数引起

第3章 控制流分析 该控制流分析的回顾 先定义规范 ,是理想解的规范 理解解的讨论:最大和最小不动点、归纳和余归纳 讨论理想解的正确性 第3章 控制流分析 该控制流分析的回顾 先定义规范 ,是理想解的规范 理解解的讨论:最大和最小不动点、归纳和余归纳 讨论理想解的正确性 再定义语法制导的规范s ,是静态分析解的规范 寻找静态分析解的办法 1、将s转变成一组约束 2、求解该组约束