中国科学技术大学:《程序设计语言理论》课程教学资源(PPT课件讲稿)第6章 递归类型

第6章 递归类型 递归定义的类型的例子 自然数表的类型 类型等式t兰wnit+(nat×t)的一个解 二叉树的类型 类型等式t兰wnit+(t×t)的一个解 使用“兰”表示解是要使两边同构,而不是相等 归纳类型对应到上述类型同构等式的初始解 例:自然数类型 余归纳类型对应到它们的终结解 例:自然数流类型
第6章 递归类型 • 递归定义的类型的例子 – 自然数表的类型 类型等式 t unit + (nat t)的一个解 – 二叉树的类型 类型等式 t unit + (t t)的一个解 使用“ ”表示解是要使两边同构,而不是相等 归纳类型对应到上述类型同构等式的初始解 例:自然数类型 余归纳类型对应到它们的终结解 例:自然数流类型

6.1引 言 本章的主要内容 直观地介绍余归纳的定义、余归纳的证明原 理和余代数 形式地介绍递归类型 形式地介绍归纳类型和余归纳类型 解释 -代数方法是从“构造的”角度研究抽象数据类型 余代数方法是从“观察的”的角度描述像对象、 自动机、进程、软件构件等基于状态的系统
6.1 引 言 本章的主要内容 • 直观地介绍余归纳的定义、余归纳的证明原 理和余代数 • 形式地介绍递归类型 • 形式地介绍归纳类型和余归纳类型 • 解释 – 代数方法是从“构造的”角度研究抽象数据类型 – 余代数方法是从“观察的”的角度描述像对象、 自动机、进程、软件构件等基于状态的系统

6.2 归纳和余归纳 6.2.1余归纳现象 例 数据集A上的有限表集可归纳地定义如下 (①)基础情况:nil是有限表 (2)迭代规则:若a∈A且o是有限表,则cons(a,o)是 有限表 ③)最小化条件:此外,有限表集中不含其它元素 最小化规则指所定义的集合是满足(1)和2)两条 约束的最小集合,无任何垃圾在其中
6.2 归纳和余归纳 6.2.1 余归纳现象 • 例 数据集A上的有限表集可归纳地定义如下 (1) 基础情况:nil是有限表 (2) 迭代规则:若aA且是有限表,则cons(a, )是 有限表 (3) 最小化条件:此外,有限表集中不含其它元素 最小化规则指所定义的集合是满足(1)和(2)两条 约束的最小集合,无任何垃圾在其中

6.2 归纳和余归纳 例 数据集A上的无限表集(流)可余归纳地定义如下 (1)迭代规则:若a∈A且o是无限表,则cos(a,o)是 无限表 (2)最大化条件:数据集4上的无限表集是满足迭代 规则的最大集合 最大化条件表示所有未被(1)排除的元素都被包 含在所定义的集合中,即该集合中任何无限表都可 以通过应用规则(1)若干次(可能是无限次)而得到
6.2 归纳和余归纳 • 例 数据集A上的无限表集(流)可余归纳地定义如下 (1) 迭代规则:若aA且是无限表,则cons(a, )是 无限表 (2) 最大化条件:数据集A上的无限表集是满足迭代 规则的最大集合 最大化条件表示所有未被(1)排除的元素都被包 含在所定义的集合中,即该集合中任何无限表都可 以通过应用规则(1)若干次(可能是无限次)而得到

6.2 归纳和余归纳 。比较 -两种表都有观察算子head和运算算子tai讥 head(cons(a,o))=a tail(cons(a,o))=o -计算有限表表长的函数length length(nil)0 length(cons(a,o))=1 length(o) 若有函数f:A→A,定义其应用到无限表所有元 素的拓展函数ext(f) head(ext(f)())=f(head(o)) tail(ext(f)(o))=ext(f)(tail(o))
6.2 归纳和余归纳 • 比较 – 两种表都有观察算子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 归纳和余归纳 例 无限表上的od运算(忽略所有偶数位置的元素) head(odd(o))head(o) tail(odd(o))=odd(tail(tail(o)) -用等式演算可得 head(tailodd())=head(odd(tail(tail() =head(tail(tail(o)) -不难证明,对所有的自然数n head(tail (odd())=head(tail)()
6.2 归纳和余归纳 • 例 无限表上的odd运算(忽略所有偶数位置的元素) head(odd()) = head() tail(odd()) = odd(tail(tail())) – 用等式演算可得 head(tail(odd())) = head(odd(tail(tail()))) = head(tail(tail())) – 不难证明,对所有的自然数n head(tail(n) (odd())) = head(tail(2n) ())

6.2 归纳和余归纳 余归纳定义的数据和函数的性质证明 1、可以用归纳法来证明,例如证明 head(tail)(odd())=head(tail () 2、互模拟 余归纳证明专用方法 -从数学上刻画系统(如对象、进程等)行为等价 这个直观概念 一指两个系统从观测者角度看,可以互相模拟对方 的行为
6.2 归纳和余归纳 • 余归纳定义的数据和函数的性质证明 1、可以用归纳法来证明,例如证明 head(tail(n) (odd())) = head(tail(2n) ()) 2、互模拟——余归纳证明专用方法 – 从数学上刻画系统(如对象、进程等)行为等价 这个直观概念 – 指两个系统从观测者角度看,可以互相模拟对方 的行为

6.2 归纳和余归纳 ·例:无限表 1、定义odd head(odd(o))head(o) tail(odd(o))=odd(tail(tail(o)) 2、定义even even odd tail 3、定义nerge head(merge(o,t))head(o) tail(merge(o,t)=merge(t,(tail())
6.2 归纳和余归纳 • 例:无限表 1、定义odd head(odd()) = head() tail(odd()) = odd(tail(tail())) 2、定义even even = odd tail 3、定义merge head(merge(, )) = head() tail(merge(, )) = merge(, (tail())

6.2 归纳和余归纳 4、基于互模拟证明nerge(odd(o),even(o)=o -互模拟是满足下面条件的关系R: 若(o,∈R,则head(o=hed()并且 〈tail(o,tai(》∈R 基于互模拟的余归纳证明原理是: 对互模拟关系R,若(o,)∈R,则o=T 定义关系 R={(merge(odd(o),een(o),)lo是一个无限表 -只要证明R是互模拟关系即可
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(o),even()))=head(odd(o)) head(o) 对于第二个条件 需证(tail(merge(odd(o),even(o),tail(o》也在R 中,从下面等式证明可得 tail(merge(odd(o),even())) merge(even(o),tail(odd(o)) merge(odd(tail(o)),odd(tail(tail(o)) = merge(odd(tail(o)),even(tail(o))) 〈erge(odd(tail讽o),even(taio),tail讽o》在R中
6.2 归纳和余归纳 – 对于第一个条件 head(merge(odd(), even())) = head(odd()) = head() – 对于第二个条件 需证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中
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科学技术大学:《程序设计语言理论》课程教学资源(PPT课件讲稿)第5章 命令式程序的语义.ppt
- 中国科学技术大学:《程序设计语言理论》课程教学资源(PPT课件讲稿)第4章 类型化λ演算的模型.ppt
- 中国科学技术大学:《程序设计语言理论》课程教学资源(PPT课件讲稿)第3章 简单类型化λ演算.ppt
- 中国科学技术大学:《程序设计语言理论》课程教学资源(PPT课件讲稿)第2章 泛代数和代数数据类型.ppt
- 中国科学技术大学:《程序设计语言理论》课程教学资源(PPT课件讲稿)第1章 引言(主讲:陈意云).ppt
- 中国科学技术大学:《程序设计语言理论》课程教学资源(参考教材)第6章 递归类型.pdf
- 中国科学技术大学:《程序设计语言理论》课程教学资源(参考教材)第2章 泛代数和代数数据类型.pdf
- 中国科学技术大学:《程序设计语言理论》课程教学资源(参考教材)第1章 引言.pdf
- 中国科学技术大学:《程序分析与程序验证》课程教学资源(PPT课件讲稿)第7章 程序验证 ProgramVerification Necula 04 Decision-Procedure Based Theorem Provers Tactic-Based Theorem Proving Inferring Loop Invariants.ppt
- 中国科学技术大学:《程序分析与程序验证》课程教学资源(PPT课件讲稿)第7章 程序验证 ProgramVerification Necula 03 Theorem Proving for FOL Satisfiability Procedures.ppt
- 中国科学技术大学:《程序分析与程序验证》课程教学资源(PPT课件讲稿)第7章 程序验证 ProgramVerification Necula 02 Finish Verification Condition Generation Simple Prover for FOL.ppt
- 中国科学技术大学:《程序分析与程序验证》课程教学资源(PPT课件讲稿)第7章 程序验证 ProgramVerification Necula 01 Theorem Proving.ppt
- 中国科学技术大学:《程序分析与程序验证》课程教学资源(PPT课件讲稿)第7章 程序验证 Program verification.ppt
- 中国科学技术大学:《程序分析与程序验证》课程教学资源(PPT课件讲稿)第6章 模型检测.ppt
- 中国科学技术大学:《程序分析与程序验证》课程教学资源(PPT课件讲稿)第5章 类型和效果系统(补充).ppt
- 中国科学技术大学:《程序分析与程序验证》课程教学资源(课件讲稿)第5章 类型和效果系统(Nielson等)Principles of Program Analysis - Type and Effect Systems.pdf
- 中国科学技术大学:《程序分析与程序验证》课程教学资源(PPT课件讲稿)第4章 抽象解释(补充).ppt
- 中国科学技术大学:《程序分析与程序验证》课程教学资源(课件讲稿)第4章 抽象解释(Nielson等)Principles of Program Analysis - Abstract Interpretation.pdf
- 中国科学技术大学:《程序分析与程序验证》课程教学资源(PPT课件讲稿)第3章 基于约束的分析(补充).ppt
- 中国科学技术大学:《程序分析与程序验证》课程教学资源(课件讲稿)第3章 基于约束的分析(Nielson等)Principles of Program Analysis - Control Flow Analysis.pdf
- 中国科学技术大学:《程序设计语言理论》课程教学资源(PPT课件讲稿)第7章 多态性.ppt
- 中国科学技术大学:《程序设计语言理论》课程教学资源(PPT课件讲稿)第8章 依赖类型.ppt
- 中国科学技术大学:《程序设计语言理论》课程教学资源(PPT课件讲稿)第9章 类型推断.ppt
- 中国科学技术大学:《程序设计语言理论》课程教学资源(PPT课件讲稿)第10章 子定型.ppt
- 华中科技大学:《大学计算机基础》课程教学资源(课件讲稿)第五章 程序设计的其它方法与技术.pdf
- 复旦大学:《C语言程序设计》课程教学资源(课件讲稿)指针.ppt
- 复旦大学:《C语言程序设计》课程教学资源(课件讲稿)第1章 程序设计和C语言.pdf
- 北京中医药大学:《计算机基础》课程教学资源(教学大纲,Ⅰ,主讲:黄友良).doc
- 北京中医药大学:《计算机基础》课程教学资源(电子教材)第一章 数据库基础知识.doc
- 北京中医药大学:《计算机基础》课程教学资源(电子教材)第二章 数据库和表.doc
- 北京中医药大学:《计算机基础》课程教学资源(电子教材)第五章 关系数据库标准语言——SQL.doc
- 北京中医药大学:《计算机基础》课程教学资源(电子教材)第三章 查询.doc
- 北京中医药大学:《计算机基础》课程教学资源(教案,主讲:黄友良).docx
- 北京中医药大学:《计算机基础》课程PPT教学课件(Access 数据库程序设计)第1章 数据库基础知识.ppt
- 北京中医药大学:《计算机基础》课程PPT教学课件(Access 数据库程序设计)第2章 数据库和表.ppt
- 北京中医药大学:《计算机基础》课程PPT教学课件(Access 数据库程序设计)第3章 查询.ppt
- 北京中医药大学:《计算机基础》课程教学资源(试卷习题)全国计算机等级考试二级笔试试卷——Access 数据库程序设计.docx
- 北京中医药大学:《计算机基础》课程教学资源(试卷习题)全国计算机等级考试二级笔试试卷——Access 数据库程序设计.docx
- 北京中医药大学:《计算机基础》课程教学资源(试卷习题)全国计算机等级考试二级笔试试卷——Access 数据库程序设计.docx
- 北京中医药大学:《计算机基础》课程教学资源(试卷习题)全国计算机等级考试二级笔试试卷——Access 数据库程序设计.docx