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

第8章依赖类型 本章内容 -带依赖类型的演算,包括依赖积与依赖和 概要介绍Dependent ML(DML),以此来展示 怎样把依赖类型用到实际语言中,这是当前程序 设计语言研究的一个课题 带广义积与广义和的直谓式演算,以及它们同 SML及其相近语言的模块系统的联系
第8章 依赖类型 • 本章内容 – 带依赖类型的演算,包括依赖积与依赖和 – 概要介绍Dependent ML(DML),以此来展示 怎样把依赖类型用到实际语言中,这是当前程序 设计语言研究的一个课题 – 带广义积与广义和的直谓式演算,以及它们同 SML及其相近语言的模块系统的联系

8.1引 言 项和类型之间的关系 (1)项×类型→项 多态性:(t:U入x:tx)it=x:intx (2)类型×类型→类型 类型表达式的分类:从o:K和o:得到o×O2:K×的 (3)项×项→项 简单类型化入演算中函数应用:(x:itx)5=5 (4)类型×项→类型 依赖类型:依赖于项的类型
8.1 引 言 • 项和类型之间的关系 (1) 项 类型 → 项 多态性:(t :U1 .x : t.x) int = x : int.x (2) 类型 类型 → 类型 类型表达式的分类:从1 :1和2 :2得到12 :12 (3) 项 项 → 项 简单类型化演算中函数应用:(x : int.x)5 = 5 (4) 类型 项 → 类型 依赖类型:依赖于项的类型

8.1引 言 依赖类型的应用 zero vector IIn:nat.vector n 对给定的自然数n,该函数返回长度为n的零向量 (vector,是一个类型构造符) cons:IΠn:nat.data→'ector n→vector(n+l) 构造较长向量的函数cons的类型 sprintf:Πf:Format..Data()-→String 函数sprintf的类型的一个简化版本 依赖类型的使用可以对项给出更精确的定型,因 而用类型系统可以更多地排除有不良行为的项
8.1 引 言 • 依赖类型的应用 – zero_vector : n: nat.vector n 对给定的自然数n,该函数返回长度为n的零向量 (vector是一个类型构造符) – cons: n: nat.data → vector n → vector (n+1) 构造较长向量的函数cons的类型 – sprintf : f: Format.Data(f) → String 函数sprintf的类型的一个简化版本 依赖类型的使用可以对项给出更精确的定型,因 而用类型系统可以更多地排除有不良行为的项

8.2带依赖类型的演算 8.2.1依赖积类型 介绍一种最简单的依赖类型系统入F,它是奠定逻 辑框架Edinburgh LF的类型系统的一种简化版本 索引类型A上的依赖积类型x:A.B -是一族集合{B(x)|x∈A的笛卡儿积 -积的元素都是函数f,对每个a∈A有几aeIa/xB 若x在表达式B中没有自由出现 则对每个a∈A都有a)∈B -依赖积类型x:A.B退化为函数类型A→B 依赖积类型x:A.B是函数类型A→B的一种拓广
8.2 带依赖类型的演算 8.2.1 依赖积类型 介绍一种最简单的依赖类型系统 LF,它是奠定逻 辑框架Edinburgh LF的类型系统的一种简化版本 •索引类型A上的依赖积类型x:A.B –是一族集合{B(x) | xA}的笛卡儿积 –积的元素都是函数f,对每个aA有f(a)[ax]B 若x在表达式B中没有自由出现 –则对每个aA都有f(a)B –依赖积类型x:A.B退化为函数类型A→B 依赖积类型x:A.B是函数类型A→B的一种拓广

8.2 带依赖类型的演算 集合族 {Bx)x∈A的每个集合Bx)对应一个以类型A的 元素x为索引的类型 -这一族类型构成一个以类型A的元素为索引的类 型族
8.2 带依赖类型的演算 • 集合族 – {B(x) | xA}的每个集合B(x)对应一个以类型A的 元素x为索引的类型 – 这一族类型构成一个以类型A的元素为索引的类 型族

⑧.2带依赖类型的演算 良形上下文的公理和推理规则 -有项、类型和种类三种语法范畴 未经检查的预备种类、预备类型和预备项的文法 语法范畴 项目 具体形式 种类 K TpelΠIx:ok 类型 = b|t|Πx:o.ooM 项 M = c x Xx:o.M MM 特点:依赖积类型和类型应用作为类型。在σM 中,σ只允许是依赖积类型,它决定了一个类型 族。种类用来区分常规类型和类型族
8.2 带依赖类型的演算 • 良形上下文的公理和推理规则 – 有项、类型和种类三种语法范畴 – 未经检查的预备种类、预备类型和预备项的文法 语法范畴 项目 具体形式 种类 ::= Type | x:.k 类型 ::= b | t | x:. | M 项 M ::= c | x | x:.M | MM – 特点:依赖积类型和类型应用作为类型。在M 中,只允许是依赖积类型,它决定了一个类型 族。种类用来区分常规类型和类型族

8.2 带依赖类型的演算 ·上下文T T:=☑|T,x:oT,t:k 项变量的类型约束、类型变量的种类约束 把Γ看成有序的,设计证明系统来证明上下文良 形与否并不困难 下面把T看成无序的集合,以简化定类规则和定 型规则的设计
8.2 带依赖类型的演算 • 上下文 ::= | , x : | , t : k – 项变量的类型约束、类型变量的种类约束 – 把看成有序的,设计证明系统来证明上下文良 形与否并不困难 – 下面把看成无序的集合,以简化定类规则和定 型规则的设计

⑧.2带依赖类型的演算 ·良形种类的两条形成规则 Type (base kind) T o:Type T,x:o (type family kind TΠx:ok
8.2 带依赖类型的演算 • 良形种类的两条形成规则 Type (base kind) (type family kind) : Type , x : k x:.k

⑧.2带依赖类型的演算 定类规则 b:K(对基调中的每个类型常量b:K) (cst这∈TTK T t:K Tσ:Tpe T,x:o:Type (vark) T Πx:O2):Tpe (Type IntroΠ O:Πx:OK)T M:O M:[Mix]K (k Elim) T K1-K 0:K2 (kind eq)
8.2 带依赖类型的演算 • 定类规则 b : (对基调中的每个类型常量b : ) (cstk ) (vark ) (Type Intro ) (k Elim) (kind eq) 1 : Type , x : 1 2 : Type ( x : 1 . 2 ) : Type t : t : 1 : (x:2 .) M : 2 1M : [M/x] : 1 1=2 : 2

8.2带依赖类型的演算 定型规则 C:σ (对基调中的每个项常量c:o x:o∈TT o:Type T x:O T 1:Type T,x:o1 M:02 ΠIntro T 入x:O1M:Πx:OO2) TM1:Πx:o.O)T M2:O1 ΠElim) MM,:[Mx]o M:1Tσ=2 (type eq) M:O2
8.2 带依赖类型的演算 • 定型规则 c : (对基调中的每个项常量c : ) (cst) (var) ( Intro) ( Elim) (type eq) x : : Type x : 1 : Type , x : 1 M :2 x: 1 .M : ( x : 1 . 2 ) M1 : (x:1 .2 ) M2 : 1 M1M2 : [M2 /x]2 M : 1 1=2 M : 2
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科学技术大学:《程序设计语言理论》课程教学资源(PPT课件讲稿)第7章 多态性.ppt
- 中国科学技术大学:《程序设计语言理论》课程教学资源(PPT课件讲稿)第6章 递归类型.ppt
- 中国科学技术大学:《程序设计语言理论》课程教学资源(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课件讲稿)第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
- 北京中医药大学:《计算机基础》课程教学资源(试卷习题)2008年9月计算机等级考试二级(ACCESS真题试卷及答案).docx
- 北京中医药大学:《计算机基础》课程教学资源(试卷习题)2009年9月全国计算机等级考试二级笔试试卷——Access 数据库程序设计(含答案).docx