【教学课件】第6章递归类型.ppt
《【教学课件】第6章递归类型.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第6章递归类型.ppt(43页珍藏版)》请在三一办公上搜索。
1、第6章 递归类型,递归定义的类型的例子自然数表的类型类型等式 t unit+(nat t)的一个解二叉树的类型类型等式 t unit+(t t)的一个解使用“”表示解是要使两边同构,而不是相等归纳类型对应到上述类型同构等式的初始解例:自然数类型余归纳类型对应到它们的终结解例:自然数流类型,6.1 引 言,本章的主要内容直观地介绍余归纳的定义、余归纳的证明原理和余代数形式地介绍递归类型形式地介绍归纳类型和余归纳类型解释代数方法是从“构造的”角度研究抽象数据类型余代数方法是从“观察的”的角度描述像对象、自动机、进程、软件构件等基于状态的系统。,6.2 归纳和余归纳,6.2.1 余归纳现象例数据集A
2、上的有限表集可归纳地定义如下(1)基础情况:nil是有限表(2)迭代规则:若aA且是有限表,则cons(a,)是有限表(3)最小化条件:此外,有限表集中不含其它元素最小化规则指所定义的集合是满足(1)和(2)两条约束的最小集合,无任何垃圾在其中,6.2 归纳和余归纳,例数据集A上的无限表集(流)可余归纳地定义如下(1)迭代规则:若aA且是无限表,则cons(a,)是无限表(2)最大化条件:数据集A上的无限表集是满足迭代规则的最大集合最大化条件表示所有未被(1)排除的元素都被包含在所定义的集合中,即该集合中任何无限表都可以通过应用规则(1)若干次(可能是无限次)而得到,6.2 归纳和余归纳,比较
3、两种表都有观察算子head和运算算子tail head(cons(a,)=a tail(cons(a,)=计算有限表表长的函数length length(nil)=0 length(cons(a,)=1+length()若有函数f:A A,定义其应用到无限表所有元素的拓展函数ext(f)head(ext(f)()=f(head()tail(ext(f)()=ext(f)(tail(),6.2 归纳和余归纳,例无限表上的odd运算(忽略所有偶数位置的元素)head(odd()=head()tail(odd()=odd(tail(tail()用等式演算可得 head(tail(odd()=head
4、(odd(tail(tail()=head(tail(tail()不难证明,对所有的自然数n head(tail(n)(odd()=head(tail(2n)(),6.2 归纳和余归纳,余归纳定义的数据和函数的性质证明1、可以用归纳法来证明,例如证明head(tail(n)(odd()=head(tail(2n)()2、互模拟余归纳证明专用方法从数学上刻画系统(如对象、进程等)行为等价这个直观概念指两个系统从观测者角度看,可以互相模拟对方的行为,6.2 归纳和余归纳,例:无限表1、定义oddhead(odd()=head()tail(odd()=odd(tail(tail()2、定义evene
5、ven=odd tail3、定义mergehead(merge(,)=head()tail(merge(,)=merge(,(tail(),6.2 归纳和余归纳,4、基于互模拟证明merge(odd(),even()=互模拟是满足下面条件的关系R:若,R,则head()=head()并且tail(),tail()R 基于互模拟的余归纳证明原理是:对互模拟关系R,若,R,则=定义关系 R=merge(odd(),even(),|是一个无限表只要证明R是互模拟关系即可,6.2 归纳和余归纳,对于第一个条件 head(merge(odd(),even()=head(odd()=head()对于第二个
6、条件需证tail(merge(odd(),even(),tail()也在R中,从下面等式证明可得 tail(merge(odd(),even()=merge(even(),tail(odd()=merge(odd(tail(),odd(tail(tail()=merge(odd(tail(),even(tail()merge(odd(tail(),even(tail(),tail()在R中,6.2 归纳和余归纳,5、利用归纳和等式演算,也可以证明merge(odd(),even()=需用归纳法先证明下面几个等式:head(tail(n)(odd()=head(tail(2n)()head(ta
7、il(2n)(merge(,)=head(tail(n)()head(tail(2n+1)(merge(,)=head(tail(n)()然后利用等式演算证明head(tail(n)(merge(odd(),even()=head(tail(n)(),6.2 归纳和余归纳,6.2.2 归纳和余归纳指南从集合论角度介绍余归纳定义和余归纳证明原理略去不介绍,6.2 归纳和余归纳,6.2.3 代数和余代数从普通算法到交互计算的转变在数学上表现为一系列的扩展 从归纳到余归纳的扩展表达了从字符串到流的转变 从良基集到非良基集的扩展非良基集作为流的行为的形式模型被引入 从代数到余代数的扩展余代数为流的演算
8、提供工具,它相当于演算在图灵计算模型中的地位,6.2 归纳和余归纳,交换图表可用来表达函数之间的等式 f,g(z)=f(z),g(z)f,g(w)=,二元积的交换图表,Y,二元和的交换图表,6.2 归纳和余归纳,范畴论基本知识 1、范畴举例 所有的集合和它们之间的函数构成一个范畴 所有的代数和它们之间的代数同态构成一个范畴 所有的图和它们之间的图同态构成一个范畴2、范畴的对象和射 每个集合是范畴的一个对象表示为图表上的一个节点 每个函数是相应两个对象之间的射表示为图表上的一条有向边,6.2 归纳和余归纳,3、对象和射构成范畴的条件 射是可以合成的函数可以合成,代数同态和图同态可以合成 射的合成
9、满足结合律函数和同态的合成有性质(h g)f=h(g f)每个对象都有一个恒等射每个集合(代数)都有一个恒等函数(同态)若f:A B是对象A到B的射,idA和idB分别表示A和B的恒等射,表示射的合成运算,那么f idA=idB f=f 显然恒等函数和恒等同态都满足该性质,6.2 归纳和余归纳,4、函子 范畴之间保结构的映射 以集合范畴到它自身的映射为例,满足下面3个条件的映射F 称为函子,其中的F0 将集合映射到集合,F1将函数映射到函数(1)若f:A B在集合范畴中,则F1(f):F0(A)F0(B)也在集合范畴中(2)对任何集合A,F1(idA)=(3)若f:A B和g:B C都在集合范
10、畴中,则F1(g f)=F1(g)F1(f),下面都用F,根据参数可知道它是F0还是F1,6.2 归纳和余归纳,基于函子来定义单类代数 令F是函子,F的一个代数(简称F代数)是一个序对U,a,其中U是集合,称为该代数的载体,a是函数a:F(U)U,称为该代数的代数结构(也称为运算)例:自然数 自然数上的零和后继函数0:1 N 和S:N N 形成函子F(X)=1+X 的F代数N,0,S:1+N N,6.2 归纳和余归纳,例:二叉树 以集合A的元素标记节点的二叉树的集合用tree(A)表示 空树nil可用函数nil:1 tree(A)表示 node:tree(A)A tree(A)tree(A)表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 递归 类型

链接地址:https://www.31ppt.com/p-5659264.html