原著作者为中文版所作的序
译者序v\\[1mm]
前言\hfill vii\\[1mm]
丛书成因viii
丛书的不足ix
着手方法x
软件新观x
“轻量级”形式技术xi
“超级程序设计师”xi
何为软件工程xii
作者的愿望xiii
这几卷在软件工程教育课程中的作用xiii
为什么这么多材料xvi
课程中如何使用这套丛书xvi
本书的简要介绍xvii
本卷的简要介绍xvii
致谢xviii
开篇1
开篇1
1绪论3
1.1准备3
1.2软件工程三部曲5
1.2.1软件和系统开发6
1.2.2三部曲引出6
1.2.3领域工程6
1.2.4需求工程7
1.2.5软件设计8
软件:代码和文档8
软件设计,I8
开发时期、阶段和步骤9
软件设计,II9
1.2.6讨论9
一般问题9
1.3文档10
1.3.1文档种类10
1.3.2时期、阶段和步骤文档11
1.3.3信息文档11
当前情况文档编制11
需要文档编制11
产品概念和措施11
设计概要12
范围和区间描述12
纲要12
合同12
讨论12
1.3.4描述文档13
描述文档种类和类型13
粗略描述13
术语14
叙述14
形式模型15
讨论15
1.3.5分析文档16
粗略描述分析和概念形成16
描述、规定和规约的确认16
规约属性的验证17
开发时期、阶段或步骤变迁的正确性17
讨论18
1.4形式技术和形式工具18
1.4.1关于形式技术和语言18
1.4.2软件工程教材中的形式技术19
1.4.3一些程序设计语言19
1.4.4一些形式规约语言19
关于面向模型的规约语言19
关于面向性质的规约语言20
关于面向性质\面向模型的规约语言20
再论程序设计语言20
规约语言续20
1.4.5目前形式语言的不足21
1.4.6其他的形式工具21
1.4.7为什么要形式技术和形式工具22
一些理由22
轶事和类比证据22
1.5方法和方法学23
1.5.1方法23
1.5.2方法学23
1.5.3讨论23
1.5.4元方法学24
1.6软件基础24
1.6.1教学法和范式25
1.6.2语用、语义和句法25
语用25
语义25
句法27
1.6.3规约和程序设计范式28
1.6.4描述、规定和规约28
软件规约、需求规定和领域描述29
1.6.5元语言29
1.6.6总结29
1.7目标和效果29
1.7.1目标29
主要目标29
一些其他的目标30
1.7.2效果30
主要效果30
一些其他的效果30
1.7.3讨论30
1.8文献评注30
1.9练习31
离散数学33
2数35
2.1引言35
2.2数符和数35
2.3数的子集36
2.3.1自然数:\bf Nat36
对一些 结构的解释37
2.3.2整数: \textbf Int37
性质37
\texttt RSL 的整数代数38
2.3.3实数:\textbf Real38
有理数39
实数上的操作39
2.3.4无理数39
2.3.5代数数39
2.3.6超越数40
2.3.7复数和虚数40
2.4类型定义:数40
2.5总结41
2.6文献评注41
2.7练习42
3集合44
3.1背景44
3.2数学的集合45
3.3特殊集合46
3.3.1外延公理46
3.3.2划分46
3.3.3幂集47
3.4分类和类型定义:集合47
3.4.1集合抽象47
3.4.2集合类型表达式和类型定义47
3.4.3分类47
3.5\texttt RSL\ 中的集合48
3.6文献评注48
3.7练习48
4笛卡尔50
4.1要点50
4.2笛卡尔值表达式50
4.3笛卡尔类型51
4.4笛卡尔的目52
4.5笛卡尔的相等52
4.6一些构造的例子52
4.7分类和类型定义:笛卡尔54
4.7.1笛卡尔抽象54
4.7.2笛卡尔类型表达式和类型定义54
4.8\texttt RSL 中的笛卡尔55
4.9文献评注55
4.10练习55
5类型57
5.1值和类型58
5.2现象和概念类型58
5.2.1现象和概念58
5.2.2实体:原子和复合59
5.2.3属性和值59
原子实体属性和值59
复合实体属性和值59
讨论61
5.3程序设计语言类型概念62
一些例子62
讨论63
5.4分类或抽象类型64
5.5内建和具体类型64
5.6类型检查65
5.6.1类型确定的变量和表达式66
5.6.2类型错误66
5.6.3类型错误检测67
5.7类型作为集合,类型作为格67
5.8总结67
5.9练习67
6函数69
6.1概述70
本章的结构70
特别注释71
6.2要点71
6.2.1背景71
6.2.2一些函数概念71
函数定义72
函数“映射”(图)73
函数空间和函数基调类型74
函数类别74
6.3函数是如何产生的75
6.4关于求值概念的题外话76
6.4.1求值,解释和细化76
6.4.2两个求值的例子76
6.4.3函数调用77
6.5函数代数78
6.5.1代数78
6.5.2函数类型78
6.5.3高阶函数类型79
6.5.4非确定性函数79
6.5.5常量函数79
6.5.6严格函数80
6.5.7严格函数和严格函数调用80
6.5.8函数上的操作81
6.6Curry 化和 记法82
6.6.1Curry 化82
6.6.2$\lambda $ 记法82
6.6.3Curry 化和 记法的例子83
6.7关系和函数83
6.7.1谓词84
6.7.2通过关系搜索的函数求值84
6.7.3非确定性函数85
6.8类型定义85
6.9结论85
6.10文献评注85
6.11练习86
7$\lambda $ 演算87
7.1非形式介绍87
7.2“纯” 演算句法88
7.3$\lambda $ 演算的语用89
7.4“纯” 演算语义89
7.4.1自由和约束变量90
7.4.2绑定和辖域90
7.4.3变量的冲突和混淆90
7.4.4代入90
7.4.5$\alpha $ 转换和 $\beta $ 转换规则91
7.4.6$\lambda $ 转换91
7.5名调用和值调用93
7.6Church--Rosser 定理 ------ 非形式版本93
7.7\texttt RSL 记法 93
7.7.1扩展 表达式93
7.7.2\bf “let ... in ... end” 结构94
7.8不动点94
7.8.1要点94
7.8.2非形式概述95
7.8.3不动点操作符 \textbf Y95
7.8.4不动点求值96
7.9讨论97
7.9.1概述97
7.9.2关于最小、最大、全部不动点97
7.9.3强调97
7.9.4原则、技术和工具98
7.10文献评注98
7.10.1参考文献98
7.10.2Alonzo Church, 1903--199598
7.11练习98
8代数101
8.1引言101
8.2代数概念的形式定义101
8.3代数是如何产生的102
8.4代数的种类103
8.4.1具体代数103
8.4.2抽象代数104
8.4.3异构代数104
8.4.4泛代数105
态射概念105
特定种类的态射105
8.5规约代数106
8.5.1表达代数的句法方式106
8.5.2一个栈代数的例子106
一些 结构的非形式解释107
8.5.3一个队列代数的例子107
一些记法:\bf hide108
8.5.4“类”表达式的语义模型108
8.6代数规约的 句法109
8.6.1“类”表达式109
8.6.2“模式”声明109
8.7讨论110
8.7.1概述110
8.7.2原则、技术与工具110
8.8文献评注110
8.9练习111
9数理逻辑112
9.1要点112
9.1.1布尔基项语言113
9.1.2命题表达式语言113
9.1.3谓词表达式语言113
9.1.4布尔值表达式114
9.1.5“chaos” ------ 未定义的表达式求值114
9.1.6公理系统和推理规则114
公理和公理系统115
推理规则115
9.1.7证明系统115
9.1.8有关两个公理系统的注解116
9.1.9“if ... then ... else ... end” 联结词116
9.1.10讨论117
9.2证明论和模型论117
9.2.1句法117
9.2.2语义118
9.2.3句法和语义118
9.2.4形式逻辑:句法和语义118
关于形式逻辑系统的更多讨论119
关于形式逻辑系统句法的更多讨论119
关于实质蕴涵的意义,$\supset $119
元语言变量120
9.2.5和证明相关的问题121
证明121
定理和形式系统理论121
一致性121
可判定性121
9.2.6联系证明论和模型论121
解释122
模型122
可满足性、衍推:$\models $ 和永真123
可靠性和完全性,$\vdash $ 和 $\models $123
9.2.7讨论123
9.3布尔基项语言123
9.3.1句法和语义123
9.3.2联结词:$\sim $, $\wedge $, $\vee $, $\Rightarrow $, $=$, $\not =$, $\equiv $124
否定,$\sim $124
合取,$\wedge $124
析取,$\vee $125
相等,=125
蕴涵,$\Rightarrow $125
恒等,$\equiv $125
9.3.3三值逻辑125
$\equiv $\ 和 =126
推理规则的形式126
真值和假值的(句法)标志符以及语义值126
布尔联结词的非交换性127
9.3.4基项和它们的求值127
布尔基项的句法,BGT128
布尔基项求值, \sf \CJKfamily heiEval\_BGT129
9.3.5“句法” 和 “语义的语义”130
9.3.6讨论131
9.4命题逻辑语言131
9.4.1命题表达式, \sf \CJKfamily heiPRO131
命题表达式的例子131
命题表达式的句法, \sf \CJKfamily heiPRO131
9.4.2例子132
9.4.3命题求值, \sf \CJKfamily heiEval\_PRO133
9.4.4二值命题演算134
前言134
一些证明概念134
公理和一条推理规则,I135
公理和推理规则,II135
9.4.5讨论136
9.5谓词逻辑语言136
9.5.1动机136
9.5.2非形式介绍137
9.5.3例138
9.5.4量词和量化表达式140
句法140
自由和约束变量141
复合量化表达式141
9.5.5谓词表达式的句法, \sf \CJKfamily heiPRE142
谓词演算的符号142
一个谓词演算的项语言142
一个谓词演算的原子公式语言142
一个谓词演算的良构公式143
谓词表达式的非形式 BNF 语法143
9.5.6一个谓词演算143
公理模式144
推理规则144
9.5.7谓词表达式求值145
求值上下文145
谓词表达式的意义和值146
求值程序, \sf \CJKfamily heiEval\_PRE146
项求值146
公式求值146
9.5.8一阶和高阶逻辑147
9.5.9永真、可满足性和模型148
上下文和解释148
永真和可满足性148
模型149
上下文、解释和模型149
9.5.10讨论149
9.6公理系统149
9.6.1概述150
9.6.2公理150
9.6.3公理系统151
9.6.4一致性和完全性151
9.6.5面向性质的规约152
定义 \sf \CJKfamily heiS = A\bf -set 的形式公理系统概述154
定义 \sf \CJKfamily heiL = A$^\ast $ 的形式公理系统的概述155
分析句法156
合成句法157
9.6.6讨论157
9.7总结157
9.8文献评注158
9.9练习159
\contentsline part\ III\hskip \betweenumberspace 简单 \texttt RSL161
简单 \texttt RSL161
\vspace *2mm
概要161
\texttt RSL 与 \texttt VDM-SL、Z 以及 \texttt B161
句法上什么构成了规约162
一个关于\texttt RSL的“标准”162
\texttt RSL 工具163
10\texttt RSL 中的原子类型和值165
10.1引言165
10.1.1数学与企业建模165
10.1.2“原始的” 模型构造块166
10.2\texttt RSL\ 中的数166
10.2.1三种数的类型166
自然数: \sf \CJKfamily heiNat166
整数: \sf \CJKfamily heiInt166
实数: \sf \CJKfamily heiReal166
10.2.2\texttt RSL\ 中数的操作167
10.3枚举标记167
10.3.1动机167
10.3.2一般理论167
10.3.3标识上的操作169
10.3.4抽象模型中的枚举标记169
10.3.5用枚举标记来建模170
枚举标记和有限状态设备170
枚举标记和 Linux 命令171
10.4字符和文本171
10.4.1动机171
10.4.2字符和文本数据类型171
10.5标识符与一般标记172
10.5.1标识符172
\texttt RSL\ 标识符172
论域标识符173
10.5.2一般标记上的操作173
10.5.3一般标记173
10.6讨论174
10.6.1概要174
10.6.2对原子实体建模174
10.7练习175
11\texttt RSL 中的函数定义177
11.1函数类型177
11.1.1函数类型的句法177
11.1.2$\rightarrow $ 和 \unhbox \voidb@x \hbox $\mathrel \mathop \rightarrow \limits ^\sim $ 的非形式语义178
11.2面向模型的显式定义178
11.3面向模型的公理定义179
11.4面向模型的前置/后置条件定义 180
11.5面向性质的公理定义181
11.6面向性质的代数定义182
11.7\texttt RSL\ 函数定义风格的小结183
11.8讨论184
11.9练习184
12面向性质与面向模型的抽象186
12.1抽象187
12.1.1关键问题187
建模与模型187
12.1.2抽象与规约187
12.1.3论抽象188
\hbox to\hsize \hss ``\rm \CJKfamily kai抽象作为一种基本的工具。''\hss 188
12.2面向性质的抽象189
12.2.1面向性质的规约的语用189
12.2.2面向性质的规约的符号关系学190
非形式文档190
类型和值------非形式描述190
类型和值------形式描述190
操作:192
形式描述192
12.2.3面向性质的规约的语义193
12.2.4讨论193
概要193
原则,技术与工具193
12.3模型与性质抽象193
12.3.1表示与操作抽象194
12.3.2面向性质与面向模型的抽象194
关键问题194
进一步描述194
12.3.3定义195
12.3.4表示抽象的例子195
面向性质的表示196
面向模型的表示197
12.3.5操作抽象的例子198
面向性质的规约198
面向模型的规约200
12.3.6讨论200
概述200
详细说明: \CJKfamily kai``总之,区别到底是什么?''201
12.4面向模型的抽象201
12.4.1后续六章的一个极短概述201
12.4.2模型与模型202
面向性质的规约的模型202
面向模型的规约的模型202
12.4.3不充分规约202
重点202
为什么需要不充分规约?203
12.4.4确定性和不确定性203
确定性表达式203
不确定性表达式203
12.4.5为什么需要宽松规约204
12.4.6讨论204
概要204
数学结构的顺序204
\texttt RSL 语言结构204
12.5原则、技术与工具204
12.5.1面向性质与面向模型的规约205
何时面向性质205
何时面向模型205
12.5.2面向性质的规约的风格205
混合规约风格206
12.5.3面向模型的规约的风格206
混合规约风格207
12.5.4隐函数和显函数207
12.5.5请不要混淆!207
12.5.6有关观测器函数的注释208
第一个原则:假定208
第二个原则:不“自引用”208
第三个原则:标识209
[1] 集合元素标识209
[2] 固定结构元素标识210
[3] 序列元素标识210
12.6练习210
13\texttt RSL 中的集合212
13.1集合:关键问题213
13.2集合数据类型213
13.2.1集合类型:定义和表达式213
13.2.2集合值表达式214
集合的枚举214
集合值操作符/操作数表达式215
集合操作基调和例子215
集合操作符的数学含义216
集合内涵217
集合------确定性和非确定性的回顾218
集合 ------ 模型、值和 $\equiv $\ 操作218
13.2.3集合绑定模式与匹配219
13.2.4非确定性220
13.3基于集合的抽象的例子220
13.3.1表示 I220
13.3.2文件系统 I221
13.3.3表示 II222
13.4使用集合进行抽象和建模223
13.4.1网络建模223
扁平网络的叙述:223
扁平网络的形式化224
超网络的叙述224
超网络的形式化224
13.4.2伪层次建模225
单图的叙述225
单图的形式化225
超图的叙述225
超图的形式化225
13.4.3对电话系统的建模227
\CJKfamily kai状态的叙述227
\CJKfamily kai状态的形式化228
\CJKfamily kai有效状态的叙述228
\CJKfamily kai有效状态的形式化228
\CJKfamily kai用户动作的叙述228
动作类型的形式化228
题外话:类型并和变体记录229
叙述: \CJKfamily kai多方呼叫229
\CJKfamily kai多方呼叫的形式化229
叙述: \CJKfamily kai终止呼叫230
\CJKfamily kai终止呼叫的形式化230
叙述: \CJKfamily kai用户忙230
\CJKfamily kai用户忙的形式化231
13.5集合的归纳定义231
13.5.1集合类型的归纳定义231
13.5.2集合值的归纳定义232
13.6关于变化的集合的注释234
13.7原则、技术和工具235
13.8讨论236
13.9文献评注236
13.10练习236
14\texttt RSL 中的笛卡尔240
14.1笛卡尔:关键问题240
14.2笛卡尔数据类型241
14.2.1笛卡尔类型和笛卡尔表达式241
14.2.2笛卡尔值表达式242
14.2.3笛卡尔操作,I243
14.2.4笛卡尔绑定模式和匹配243
14.2.5笛卡尔操作,II244
14.3笛卡尔抽象的例子244
14.3.1文件系统 II244
14.3.2库拉托夫斯基(Kuratowski):对和集合245
14.4用笛卡尔进行抽象与建模247
14.4.1句法结构建模247
叙述------句法(笛卡尔)范畴248
题外话------并类型操作符:$|$248
另一段题外话------笛卡尔文本类型248
形式化------句法(笛卡尔)范畴248
形式化------(笛卡尔的)良构性249
一条迂回之路:\texttt RSL“case”结构249
笛卡尔模式250
笛卡尔模式、拟合和绑定250
\hfill \texttt RSL\ \bf case 结构迂回之路的结束251
14.4.2笛卡尔“\bf let ... \bf in ... \bf end”绑定251
14.4.3语义结构建模252
叙述------语义类型252
程序点252
格局252
程序指针堆栈252
形式化------语义类型252
叙述------计算机程序解释253
形式化------语义函数253
14.4.4笛卡尔:初步的讨论254
14.5归纳笛卡尔定义255
14.5.1归纳笛卡尔类型定义255
14.5.2笛卡尔值的归纳定义255
14.6讨论257
14.6.1概述257
14.6.2原则、技术和工具258
14.7练习258
15\texttt RSL\ 中的列表262
15.1与列表相关的一些观点262
15.2列表数据类型263
15.2.1列表类型263
15.2.2列表值表达式264
列表的枚举264
列表值操作符/操作数表达式265
操作符基调及其非形式的含义:265
列表操作的操作式及非形式定义:265
列表的内涵266
15.2.3列表的绑定模式与匹配267
15.2.4列表:确定性和非确定性的回顾268
15.3基于列表的抽象的小例子268
15.3.1表示268
15.3.2堆栈和队列269
15.3.3文件系统 III270
15.3.4排序算法272
15.4使用列表进行抽象与建模273
15.4.1使用列表对书进行建模273
实体叙述273
形式化274
操作叙述274
形式化274
15.4.2“上下文中的关键字(KeyWord-In-Context,KWIC)”的建模274
给定的问题:275
非形式问题描述的讨论:275
一些辅助函数:276
模型:277
15.5列表的归纳定义279
15.5.1列表类型的归纳定义279
15.5.2列表值的归纳定义280
15.6列表抽象和模型的回顾281
15.7列表:讨论282
15.8练习282
16\texttt RSL 中的映射286
16.1关键问题286
16.2映射数据类型287
16.2.1映射类型:定义和表达式287
16.2.2映射值表达式288
映射的枚举288
确定的和非确定的映射值288
映射操作符/操作数表达式288
\textup \CJKfamily kai映射操作基调和例子289
\textup \CJKfamily kai映射操作符的含义289
映射的内涵290
16.2.3映射的绑定模式与匹配291
16.2.4非确定性292
16.3基于映射抽象的例子292
16.3.1排序292
16.3.2等价关系292
16.4使用映射进行抽象与建模293
16.4.1图293
16.4.2结构化的表295
\textup \CJKfamily kai描述 ------ 类型295
\textup \CJKfamily kai形式化 ------ 类型296
\textup \CJKfamily kai描述 ------ 不变式296
\textup \CJKfamily kai形式化 ------ 不变式296
16.4.3层次结构297
\textup \CJKfamily kai描述 ------ 层次结构297
\textup \CJKfamily kai形式化 ------ 层次结构297
\textup \CJKfamily kai描述 ------ 路径298
\textup \CJKfamily kai形式化 ------ 路径298
\textup \CJKfamily kai描述 ------ 路径操作299
\textup \CJKfamily kai形式化 ------ 路径操作299
16.4.4关系文件系统 (IV) 和数据库300
16.4.5复杂指针数据结构303
讨论312
16.4.6数据结构的良构性312
讨论315
16.4.7讨论316
16.5映射的归纳定义316
16.5.1映射类型的归纳定义316
16.5.2映射值的归纳定义317
16.6映射抽象和建模的回顾319
16.7映射:讨论321
16.8练习321
17\texttt RSL\ 中的高阶函数325
17.1函数:关键问题325
17.2使用基于函数的抽象的例子326
17.2.1泛函326
17.2.2讨论327
17.3用函数进行抽象与建模327
17.3.1函数作为概念327
句法类型327
语义类型:328
语义确立函数328
高阶函数作为指称329
17.3.2操作符提升330
操作符提升的例子330
描述与分析:类型331
形式化:类型332
描述:操作333
讨论335
描述:提升的函数335
形式化:提升的函数336
17.4函数的归纳定义336
17.4.1函数类型的归纳定义336
17.4.2函数值的归纳定义337
17.5函数抽象与建模的回顾337
17.6讨论338
17.7练习338
\contentsline part\ IV\hskip \betweenumberspace 规约类型339
规约类型339
18\texttt RSL 中的类型341
18.1关键问题341
18.2类型范畴342
18.2.1抽象类型:分类342
18.2.2具体类型342
18.2.3讨论343
18.3枚举标记类型的回顾343
18.4记录:构造器和析构器344
18.4.1概要344
18.4.2变体记录值的归纳公理345
非递归记录类型的定义345
递归记录类型的定义345
18.4.3一个例子346
18.5联合类型的定义347
18.6短记录类型的定义347
18.7类型表达式,回顾348
18.8子类型348
18.9类型定义,回顾349
18.10关于递归类型定义349
18.11讨论349
18.11.1概要349
18.11.2原则、技术和工具350
18.12文献评注350
18.13练习350
\contentsline part\ V\hskip \betweenumberspace 规约程序设计353
规约程序设计353
\vspace *2mm
关于规约程序设计353
关于问题与练习354
19应用式规约程序设计355
19.1作用域与绑定355
19.1.1绑定模式 ------ 非形式说明356
19.1.2“let” 结构的作用域和绑定 [1\hbox ]357
19.1.3函数定义作用域与绑定[2\hbox ]358
19.1.4“case”结构的作用域和绑定[3\hbox ]358
19.1.5内涵:作用域和绑定[4\hbox ]359
19.1.6量化:作用域和绑定 [5\hbox ] 360
19.2直观理解360
19.2.1简单“let \textrm a = $\mathcal E_d$ in $\mathcal E_b$\textrm (a) end”360
19.2.2递归“let\ \textrm f(a) = $\mathcal E_d$\textrm (f) in\ $\mathcal E_b$\textrm (f,a) end”360
19.2.3直谓 “let\ \textrm a:A $\bullet \ \mathcal P$\textrm (a) in\ $\mathcal E$\textrm (a) end”361
19.2.4多个 ``let\ \textrm a$_i$ = $\mathcal E_d_i$ in\ $\mathcal E_b$\textrm (a$_i$) end''361
19.2.5文字和标识符362
文字362
标识符362
19.3操作符/操作数表达式362
19.4枚举和内涵表达式363
19.5条件表达式363
19.6绑定、确定类型、模式和匹配365
19.6.1问题365
句法便利问题365
19.6.2绑定和模式的本质366
绑定366
模式366
绑定和模式:明显的不同366
绑定和确定类型367
19.6.3绑定模式367
较早内容回顾367
记录绑定模式368
绑定模式的一般形式369
\rm 注释371
\rm 进一步的介绍371
19.6.4给定类型371
19.6.5选择模式和绑定372
注释373
一些观察377
19.6.6总结378
19.7回顾和讨论378
19.7.1概述378
19.7.2原则和技术378
19.8文献评注379
19.9练习379
20命令式规约程序设计388
20.1直观理解388
20.2命令式组合子:一个 演算389
20.2.1[0] “变量”声明389
20.2.2[1] 赋值: “var := expression”391
20.2.3[9] 状态表达式391
20.2.4[2] “skip”: 无动作 391
20.2.5[3] 语句序列 (;)391
20.2.6[4] ``if ... then ... else ... end''391
20.2.7[5--6] ``while ... do ... end''和 ``do ... until ... end''392
20.2.8[7] ``case ... of ... end''392
20.2.9[8] ``for... in ... do... end''392
20.3变量引用:指针393
20.3.1简单引用的介绍393
20.3.2动态分配和引用393
直观理解394
位置和值的类型395
存储不变式395
语义操作396
句法形式396
语义397
20.3.3讨论:先语义,后句法398
20.3.4讨论:类型同态398
20.3.5状态的概念398
20.4函数定义和表达式399
20.4.1\bf Unit 类型表达式, I399
20.4.2命令式函数399
20.4.3读/写访问描述400
20.4.4局部变量400
20.4.5\bf Unit 类型表达式, II400
20.4.6纯表达式401
20.4.7只读表达式401
状态量化 ($\Box $)402
20.4.8等价 ($\equiv $) 和相等 (=)402
等价 ($\equiv $)402
条件等价403
相等 (=)403
20.5转化:应用式到命令式403
20.5.1应用式到命令式的转化403
20.5.2递归到迭代的转化404
20.5.3应用式到命令式的模式405
模式406
20.5.4正确性、原则、技术、工具412
20.6配置建模的风格412
20.6.1应用式上下文和状态412
句法和语义类型412
\textup \CJKfamily kai句法类型413
\textup \CJKfamily kai语义类型:413
辅助函数413
简单解释函数414
复合解释函数414
上下文创建解释函数414
总结、应用式上下文和状态415
20.6.2应用式上下文和命令式状态416
元状态和辅助函数416
简单解释函数416
复合解释函数417
上下文创建解释函数417
总结、应用式上下文和命令式状态418
20.6.3命令式上下文和状态418
元状态418
辅助函数419
简单解释函数419
复合解释函数419
上下文创建解释函数420
总结、命令式上下文和状态420
20.6.4顺序模型的总结421
20.7回顾和讨论421
20.7.1回顾421
20.7.2讨论421
20.8文献评注422
20.8.1计算理论422
20.8.2$\lambda $ 演算的类型理论422
20.8.3源程序转换著作422
20.8.4命令式程序设计原理423
20.9练习423
21并发式规约程序设计426
21.1行为和进程抽象427
21.1.1引言427
21.1.2关于进程和其他的抽象427
21.2直观介绍428
21.2.1说明性的会合场景428
模式的“会合”规约1--2--3430
模式的“会合”规约 4431
21.2.2图和记法总结431
21.2.3关于迹语义432
21.2.4一些描述:进程,等等433
21.2.5进程建模原则434
构件 $\equiv $进程434
21.2.6非形式的例子435
21.2.7一些建模评论------题外话439
21.2.8例(续)439
21.2.9一些系统的通道格局441
21.2.10并发概念------总结441
21.3通信顺序进程,CSP443
21.3.1导言:进程和事件443
21.3.2进程组合子等等444
\bf stop:基本进程444
前缀444
定义444
$\unhbox \voidb@x \hbox $\delimiter "4264306 \tmspace -\thinmuskip .1667em\delimiter "5265307 \tmspace -\thinmuskip .1667em\tmspace -\thinmuskip .1667em\tmspace -\thinmuskip .1667em\tmspace -\thinmuskip .1667em\tmspace -\thinmuskip .1667em\tmspace -\thinmuskip .1667em\tmspace +\thickmuskip .2777em\delimiter "4262304 \tmspace -\thinmuskip .1667em\delimiter "5263305 $$: 外部非确定性选择444
$\unhbox \voidb@x \hbox $\delimiter "4264306 \tmspace -\thinmuskip .1667em\delimiter "5265307 $$:内部非确定性选择444
CSP 定律 (I)445
复合事件445
输入和输出445
\unhbox \voidb@x \hbox $\parallel $:并行组合446
共享事件446
CSP 定律(II)446
21.3.3讨论447
21.4\texttt RSL/CSP 进程组合子447
21.4.1类 \texttt RSL 通道447
21.4.2\texttt RSL 通信子句448
简单输入/输入出子句448
21.4.3\texttt RSL 进程448
简单进程定义448
进程及其定义449
进程调用449
数组通道进程定义450
21.4.4并行进程组合子450
21.4.5非确定性外部选择451
21.4.6非确定性内部选择451
21.4.7互锁组合子451
21.4.8总结452
21.4.9提示452
21.5翻译模式452
21.5.1阶段 I:应用式模式453
21.5.2阶段 II:简单重构453
21.5.3阶段 III:引入并行453
21.5.4阶段IV:简单重构454
21.5.5阶段关系455
21.5.6阶段 V:命令式重构455
21.5.7一些评论456
21.6并行和并发:讨论456
21.6.1\texttt CSP 和 \texttt RSL/CSP456
21.6.2建模技巧456
21.7文献评注457
21.8练习457
其他463
其他463
22其他465
22.1我们讨论了什么465
22.2下一个讨论什么465
22.3下一个的下一个讨论什么465
22.4提示466
22.5 \CJKfamily kai“轻量级”形式方法467
22.6文献评注467
\contentsline part\ VII\hskip \betweenumberspace 附录469
附录469
A共同练习题目471
A.1运输网络471
A.2集装箱物流471
A.3金融服务行业472
A.4练习参考总结473
B术语表474
B.1参考列表的种类475
B.1.1术语475
B.1.2词典475
B.1.3百科全书475
B.1.4本体论475
B.1.5分类学475
B.1.6术语学476
B.1.7类属词典476
B.2印刷格式和拼写476
B.3术语表476
\contentsline chapter参考文献545