收藏 分享(赏)

形式语义学之连续函数.ppt

上传人:hskm5268 文档编号:7800657 上传时间:2019-05-26 格式:PPT 页数:31 大小:345.50KB
下载 相关 举报
形式语义学之连续函数.ppt_第1页
第1页 / 共31页
形式语义学之连续函数.ppt_第2页
第2页 / 共31页
形式语义学之连续函数.ppt_第3页
第3页 / 共31页
形式语义学之连续函数.ppt_第4页
第4页 / 共31页
形式语义学之连续函数.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、形式语义学,Formal Semantics of Programming Languages2011.09,内容回顾,关于论域 完全半序集 半序集 = 集合 + 半序关系 最小元 任何一个递增链都有最小上届 一个集合可以扩展为平坦集(最小元+平坦关系); 平坦集一定是完全半序集; 任何一个集合一定可以扩展成完全半序集; 论域是完全半序集 论域构造:论域表达式 原始论域 论域构造符:,+,*,,2019/5/26,2,第二章 函数式抽象描述方法,2.1 论域理论基础(Domain Theory) 2.1.0 集合的基本概念 2.1.1 完全半序集(complete partial order

2、set, CPO) 2.1.2 连续函数(continuous functions) 2.1.3 最小不动点(least fixed point),2019/5/26,3,2.1.2 连续函数,主要内容 相关概念 部分函数(partial function) 全函数(total function) 自然开拓函数 单调函数(monotonic function) 严格函数(strict function) 连续函数(continuous function) 相关性质,2019/5/26,4,相关概念,部分函数:设f是D1到D2的函数,如果存在dD1使得f(d)没有定义,则称f为部分函数;全函数:

3、设f是D1到D2的函数,如果对于任意dD1都存在dD2使得f (d)=d,则称f为全函数;,2019/5/26,5,相关概念,自然开拓函数:设fD1 Dn D, 且当(d1,dn)中有一个di是i时,f (d1,dn) = ,则称f为自然开拓函数。 部分函数开拓成全函数的方法: 设有部分函数f D1D2 ; 分别扩充D1 和D2为D1和 D2; 扩充函数f为f ,使得2 ,当d 1 = 1 f (d1) = 2 ,当f(d1)无定义f(d1) ,其他,2019/5/26,6,相关概念,单调函数:设全函数f D1 D2 ,且D1 和D2是半序集。对于任意x, yD1,如果x 1 y 则有f(x)

4、 2 f(y),那么称f是单调函数.严格函数:设全函数f D1 D2 ,D1 和D2是半序集,且分别有最小元1和2 。如果f满足条件f(1)= 2 ,则称f为严格函数。,2019/5/26,7,相关概念,连续函数:设全函数f D1 D2 ,且D1 和D2是完全半序集 。如果f满足如下条件则称f为连续函数:i f (Xi) = f ( i Xi ),2019/5/26,8,连续函数的应用,描述程序语义时,要求 连续函数(部分函数全函数 连续函数) 域都是完全半序集 解决递归的问题: 最小不动点 连续函数必有最小不动点,而且唯一; 对连续函数有求最小不动点的方法;,2019/5/26,9,2019

5、/5/26,10,一些经常用到的函数,常函数:f D1 D2 满足xD1 都有f (x)=c,其中c是D2中的一个固定常数。恒等函数:f D D 满足xD都有f (x)=x。复合函数:设f D1 D2 ,g D2 D3,则称h是f和g的复合函数,记作gf,其中h D1 D3 ,而且xD1都有h (x)=g (f(x)。,2019/5/26,11,一些经常用到的函数,条件函数(算子):设bD BOOL,f1, f2DM, 则条件函数cond定义如下:condDM,而且xD都有f1(x) ,如果b(x) = tt;cond (x)= f2(x) ,如果b(x) = ff; ,如果b(x) = ;,

6、2019/5/26,12,一些经常用到的函数,联合函数:设fi DDi(1im),则联合函数f(简记为f1, fm)定义如下:fDD1 Dm,而且xD都有f(x)=(f1(x), fm(x)。更新函数:设f D1D2,且aD1, bD2, 则更新函数f定义如下:fD1D2, 而且对于任意xD1如果x=a则f(x)=b,否则f(x)=f(x),更新函数简记为fb/a。,2019/5/26,13,一些经常用到的函数,Curry函数(算子): 设fD1D2 D, xD1 , yD2 curryD1D2DD1D2 D curry f x y = f (x, y), curry f x 是一个D2 D上

7、的函数, xD1 curry f 是一个D1D2 D上的函数,2019/5/26,14,Curry算子的解释,Curry算子,分解定义域,使其升级为高阶函数; 例子 函数f的定义: f(x,y)= x+y 函数f的函数空间:(INTINT INT) Curry : (INTINT INT) (INT INTINT) Curry f x y : f(x,y),Curry f 1 2 = f(1,2) = 1+2 = 3 Curry f x : INT INT, Curry f 1 = f(1,y) = 1+y Curry f : INT INTINT, Curry f = f(x,y) =x+y

8、令 g = Curry f,对于任意xINT, g(x) 的函数空间为 INT INT,g = 1 12, 23, ,2 13, 24, , 即 g(1) = 12, 23, ,.,2019/5/26,15,相关性质,连续函数必是单调函数(反之未必); 平坦集上的严格函数是单调函数; 常函数是单调函数; 恒等函数是单调函数; 自然开拓函数是单调函数; 单调函数的复合函数还是单调函数; 证明略。,2019/5/26,16,相关性质,平坦集上的严格函数是连续函数; 常函数是连续函数; 恒等函数是连续函数; 自然开拓函数是连续函数; 连续函数的复合函数还是连续函数; 连续函数的联合函数还是连续函数;

9、 连续函数的更新函数还是连续函数; 连续函数的条件函数还是连续函数; Curry算子相关函数还是连续函数;,2019/5/26,17,重要结论,任何集合可以扩展成平坦集; 任何集合可以扩展成完全半序集; 任何集合可以扩展成论域; 定义在平坦集上的严格函数是连续函数; 常用的函数都可以开拓成连续函数; 用连续函数定义的程序语义是有解的(最小不动点;,第二章 函数式抽象描述方法,2.1 论域理论基础(Domain Theory) 2.1.0 集合的基本概念 2.1.1 完全半序集(complete partial order set, CPO) 2.1.2 连续函数(continuous func

10、tions) 2.1.3 最小不动点(least fixed point),2019/5/26,18,2.1.3 最小不动点,相关概念 不动点 最小不动点 最小不动点的性质 最小不动点的例子,2019/5/26,19,2.1.3 最小不动点,问题的提出 递归定义 X= F(X),包括函数、类型和程序 确定解的方法: 计算规则 过程式程序设计语言采用这种方式; 不同的计算规则得到的未必相同; 最小不动点 确定而且唯一; 存在一个简明的最小不动点计算规则; 存在证明最小不动点性质的强有力的方法;,2019/5/26,20,相关概念,不动点:设fDD,且dD, 如果有f(d) =d,则称d为f的不动

11、点。 最小不动点:设fDD,且 f 有不动点,则称 f 的所有不动点中的最小者为最小不动点,记作f。 说明: 要求函数的定义域和值域相同; 一个函数不一定都有不动点; 一个函数可能有多个不动点,但是不一定有最小不动点;,2019/5/26,21,2019/5/26,22,不动点和最小不动点例子,没有不动点情形: 函数f INT INT, f(x) = x+1; 多个不动点,但没有最小不动点 D = , a, b, 函数g D D, g(x) = (x= a, x); 不动点:a, b 没有最小不动点:因为a和b之间没有关系;,2019/5/26,23,不动点和最小不动点例子,多个不动点,最小不

12、动点 D = , a, b, 函数g D D, g(x) = x; 不动点:, a, b 最小不动点:,2019/5/26,24,最小不动点的性质,最小不动点的唯一性:设fDD,如果f 有最小不动点,则必唯一。 如果a和b都是最小不动点 a b, b a a=b 最小不动点的存在性:若fDD是连续函数,则f有最小不动点,且有f = fi(),其中fi+1()= f ( fi() ), f0() = 。 连续函数必有最小不动点; 最小不动点的计算方法;,-25-,证明f = fi()的存在性,证明序列fi()是D上的链:函数f的单调性有 f()f() f2()fi() fi+1() 证明 fi(

13、)是f的不动点:函数f的连续性有 f( fi()= f(fi()= fi+1()= fi() 证明 fi()是f的最小不动点:假设d是函数f的任一不动点即f(d)=d函数f的单调性和d不动点性有 f0 () f0 (d)=df1() f1(d)=dfi+1()= f(fi() f(d)=d,2019/5/26,26,最小不动点的计算方法,对于一个连续函数f DD; 是D的最小元; x1= f ( ), x2= f (x1), 直到存在n, xn= f (xn), 最后确定f = xn ,即xn就是最小不动点,2019/5/26,27,最小不动点例子,最小不动点的简单例子 函数 F:DD,D =

14、 pow a,b,c, Fx = x a,b 函数F有两个不动点:a,b和a,b,c Fa,b = a,b a,b = a,b Fa,b,c = a,b a,b,c = a,b,c 最小不动点:a,b D的最小元 D=; F D = a,b = a,b Fa,b = a,b a,b = a,b,收敛 a,b就是最小不动点;,-28-,最小不动点-复杂例子1,设有如下的类型声明:typedef x = INT;typedef y = x;typedef z = y;,该类型声明建立了如下的类型环境: (TEnv : ID TYPE) : x |- INT, y |- (x), z|- (y) 形

15、成一个递归函数: : TEnv TEnv 即有递归方程 () = ,下面求解该函数的最小不动点:() 1.首先求出函数定义域的最小元,即类型环境TEnv的最小元 , = x T, y T, z T , T是TYPE上的最小元 ; 2. 然后开始迭代: 0 () = = x T, y T, z T = 0 1 ()= ( 0 () ) = (0) = xINT, y T, z T = 1 2 ()= ( 1 () ) = (1) = xINT, yINT, z T = 2 3 ()= ( 2() ) = (2) = xINT, yINT, zINT = 3 4 ()= ( 3() ) = (3)

16、 = 3 3是最小不动点,-29-,最小不动点-复杂例子2,设有如下的类型声明:typedef x = y;typedef y = z;typedef z = INT;,该类型声明建立了如下的类型环境: (TEnv : ID TYPE) : x |- (y), y |- (z), z|- INT 形成一个递归函数: : TEnv TEnv 即有递归方程 () = ,下面求解该函数的最小不动点:() 1.首先求出函数定义域的最小元,即类型环境TEnv的最小元 , = x T, y T, z T , T是TYPE上的最小元 ; 2. 然后开始迭代: 0 () = = x T, y T, z T =

17、 0 1 ()= ( 0 () ) = (0) = x T, y T, zINT = 1 2 ()= ( 1 () ) = (1) = x T, yINT, zINT = 2 3 ()= ( 2() ) = (2) = xINT, yINT, zINT = 3 4 ()= ( 3() ) = (3) = 3 3是最小不动点,2019/5/26,30,2.1 小结,目的:为语义形式化提供一个理论基础平台; 任何一个集合可以扩展为平坦集; 平坦集一定是完全半序集; 论域表达式定义的是完全半序集; 定义在论域上的常用的函数及其复合都是连续函数; 连续函数必有最小不动点; 后面用到的数据类型都是论域; 后面用到的函数都是连续函数,都有解,即它的最小不动点; 要求: 理解和掌握基本概念及其相关的性质 理解相关概念和性质的应用,知识点链接,2019/5/26,31,完全半序集,形式语义,Scott论域 (类型),连续函数,最小不动点 (函数的解),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报