译者序
第2版前言
第1版前言
部分 判断和规则
第1章 抽象语法 2
1.1 抽象语法树 2
1.2 抽象绑定树 4
1.3 注记 8
习题 8
第2章 归纳定义 10
2.1 判断 10
2.2 推理规则 10
2.3 推导 11
2.4 规则归纳 13
2.5 迭代归纳定义和联立归纳定义 14
2.6 用规则定义函数 15
2.7 注记 15
习题 16
第3章 假言判断与一般性判断 17
3.1 假言判断 17
3.1.1 可导性 17
3.1.2 可纳性 18
3.2 假言归纳定义 20
3.3 一般性判断 21
3.4 泛型归纳定义 22
3.5 注记 23
习题 23
第二部分 静态语义和动态语义
第4章 静态语义 28
4.1 语法 28
4.2 类型系统 29
4.3 结构性质 30
4.4 注记 31
习题 31
第5章 动态语义 33
5.1 转换系统 33
5.2 结构化动态语义 34
5.3 上下文动态语义 36
5.4 等式动态语义 37
5.5 注记 39
习题 39
第6章 类型安全 40
6.1 保持性 40
6.2 进展性 41
6.3 运行时错误 42
6.4 注记 43
习题 43
第7章 求值动态语义 44
7.1 求值动态语义 44
7.2 结构化动态语义和求值动态语义
的关系 45
7.3 重温类型安全 45
7.4 成本动态语义 46
7.5 注记 47
习题 47
第三部分 全函数
第8章 函数定义和值 50
8.1 一阶函数 50
8.2 高阶函数 51
8.3 求值动态语义和定义等同 53
8.4 动态作用域 54
8.5 注记 55
习题 55
第9章 高阶递归的系统T 56
9.1 静态语义 56
9.2 动态语义 57
9.3 可定义性 58
9.4 不可定义性 59
9.5 注记 61
习题 61
第四部分 有限数据类型
第10章 积类型 64
10.1 空积与二元积 64
10.2 有限积 65
10.3 原始互递归 66
10.4 注记 67
习题 67
第11章 和类型 69
11.1 空和与二元和 69
11.2 有限和 70
11.3 和类型的应用 71
11.3.1 void和unit 71
11.3.2 布尔类型 72
11.3.3 枚举 72
11.3.4 选择 73
11.4 注记 74
习题 74
第五部分 类型和命题
第12章 构造逻辑 78
12.1 构造语义 78
12.2 构造逻辑 79
12.2.1 可证性 79
12.2.2 证明项 81
12.3 证明的动态语义 82
12.4 命题即类型 83
12.5 注记 83
习题 83
第13章 经典逻辑 85
13.1 经典逻辑 85
13.1.1 可证性和可反驳性 86
13.1.2 证明和反驳 87
13.2 推导消去形式 89
13.3 证明的动态语义 90
13.4 排中律 91
13.5 双重否定翻译 92
13.6 注记 93
习题 94
第六部分 无限数据类型
第14章 泛型编程 96
14.1 引言 96
14.2 多项式类型算子 96
14.3 正类型算子 98
14.4 注记 99
习题 99
第15章 归纳类型与余归纳类型 101
15.1 示例 101
15.2 静态语义 104
15.2.1 类型 104
15.2.2 表达式 105
15.3 动态语义 105
15.4 求解类型等式 106
15.5 注记 107
习题 107
第七部分 变量类型
第16章 多态类型的系统F 110
16.1 多态抽象 110
16.2 多态的可定义性 113
16.2.1 积与和 113
16.2.2 自然数 114
16.3 参数化概述 115
16.4 注记 116
习题 116
第17章 抽象类型 117
17.1 存在类型 117
17.1.1 静态语义 118
17.1.2 动态语义 118
17.1.3 安全性 118
17.2 数据抽象 119
17.3 存在类型的可定义性 120
17.4 表示独立性 120
17.5 注记 122
习题 122
第18章 高阶种类 123
18.1 构造器和种类 123
18.2 构造器等同 125
18.3 表达式和类型 126
18.4 注记 126
习题 127
第八部分 部分性和递归类型
第19章 递归函数的系统PCF 130
19.1 静态语义 131
19.2 动态语义 132
19.3 可定义性 133
19.4 有限数据结构和无限数据结构 135
19.5 完全性与部分性 135
19.6 注记 136
习题 136
第20章 递归类型的系统FPC 138
20.1 求解类型等式 138
20.2 归纳类型和余归纳类型 139
20.3 自指/自引用 141
20.4 状态的起源 142
20.5 注记 143
习题 143
第九部分 动态类型
第21章 无类型的λ演算 146
21.1 λ演算 146
21.2 可定义性 147
21.3 Scott定理 149
21.4 无类型意味着单类型 150
21.5 注记 151
习题 151
第22章 动态定型 153
22.1 动态类型化PCF 153
22.2 变体和扩展 156
22.3 动态定型的批判 158
22.4