前 言
本书将演绎方法应用于程序设计,讨论程序与保证它们能正确工作的抽象数学理论之间的联系.书中把反映这些理论的规程(speci.cation),基于这些理论写出的算法,以及描述算法性质的引理和定理一起呈现给读者.这些算法在一种实际程序设计语言里的实现是本书的中心.虽然规程主要是供人阅读,但它们也应该(或者说必须)严格地与非形式化的、供机器使用的代码相结合,必须在通用的同时又是抽象而且精确的.
与在其他科学和工程领域里的情况一样,适合作为程序设计的基础的同样是演绎方法.演绎方法能帮助我们将复杂系统分解为一些具有特定数学行为的组件,而这种分解又是设计高效、可靠、安全和经济的软件的前提.
本书是想奉献给那些希望更深入地理解程序设计的人们,无论他们是专职软件开发人员,还是把程序设计看作其专业活动中一个重要组成部分的科学家或工程师.
本书编写的基本想法是让读者从头到尾完整阅读.读者只有通过阅读代码、证明引理、完成练习,才能真正理解书中的各方面材料.此外我们还建议了一些项目,其中有些是完全开放的.本书的内容很紧凑,认真的读者最终会看到书中各部分之间的联系,以及我们选择这些材料的理由.发现本书在体系结构方面的原理应该是读者的一个目标.
目 录
1.1理念范畴:实体,类别,类属
1.2值
1.3对象
1.4过程
1.5规范类型
1.6规范过程
1.7概念
1.8总结
2.1变换
2.2轨道
2.3碰撞点
2.4轨道规模的度量
2.5动作
2.6总结
3.1可结合性
3.2计算乘幂
3.3程序变换
3.4处理特殊情况的过程
第4 章线性序
4.1关系的分类
4.2全序和弱序
4.3按序选取
4.4自然全序
4.5派生过程组
4.6按序选取过程的扩展
4.7总结