Preface |
Reasons for Writing These Volumes |
Shortcomings of These Volumes |
Methods of Approach |
A New Look at Software |
Formal Techniques "Light" |
The "Super Programmer" |
What Is Software Engineering? |
The Author's Aspirations |
Role of These Volumes in an SE Education Programme |
Why So Much Material? |
How to Use These Volumes in a Course |
Brief Guide to the Book |
Guide to This Volume |
Acknowledgments |
Opening / Part I: |
Introduction / 1: |
Setting the Stage / 1.1: |
A Software Engineering Triptych / 1.2: |
Documentation / 1.3: |
Formal Techniques and Formal Tools / 1.4: |
Method and Methodology / 1.5: |
The Very Bases of Software / 1.6: |
Aims and Objectives / 1.7: |
Bibliographical Notes / 1.8: |
Exercises / 1.9: |
Discrete Mathematics / Part II: |
Numbers / 2: |
Numerals and Numbers / 2.1: |
Subsets of Numbers / 2.3: |
Type Definitions: Numbers / 2.4: |
Summary / 2.5: |
Sets / 2.6: |
Background / 3.1: |
Mathematical Sets / 3.2: |
Special Sets / 3.3: |
Sorts and Type Definitions: Sets / 3.4: |
Sets in RSL / 3.5: |
Cartesians / 3.6: |
The Issues / 4.1: |
Cartesian-Valued Expressions / 4.2: |
Cartesian Types / 4.3: |
Cartesian Arity / 4.4: |
Cartesian Equality / 4.5: |
Some Construed Examples / 4.6: |
Sorts and Type Definitions: Cartesians / 4.7: |
Cartesians in RSL / 4.8: |
Types / 4.9: |
Values and Types / 5.1: |
Phenomena and Concept Types / 5.2: |
Programming Language Type Concepts / 5.3: |
Sorts or Abstract Types / 5.4: |
Built-in and Concrete Types / 5.5: |
Type Checking / 5.6: |
Types as Sets, Types as Lattices / 5.7: |
Functions / 5.8: |
General Overview / 6.1: |
How Do Functions Come About? / 6.2: |
An Aside: On the Concept of Evaluation / 6.4: |
Function Algebras / 6.5: |
Currying and [lambda]-Notation / 6.6: |
Relations and Functions / 6.7: |
Type Definitions / 6.8: |
Conclusion / 6.9: |
A [lambda]-Calculus / 6.10: |
Informal Introduction / 7.1: |
A "Pure" [lambda]-Calculus Syntax / 7.2: |
A [lambda]-Calculus Pragmatics / 7.3: |
A "Pure" [lambda]-Calculus Semantics / 7.4: |
Call-by-Name Versus Call-by-Value / 7.5: |
The Church-Rosser Theorems - Informal Version / 7.6: |
The RSL [lambda]-Notation / 7.7: |
Fix Points / 7.8: |
Discussion / 7.9: |
Algebras / 7.10: |
Formal Definition of the Algebra Concept / 8.1: |
How Do Algebras Come About? / 8.3: |
Kinds of Algebras / 8.4: |
Specification Algebras / 8.5: |
RSL Syntax for Algebra Specifications / 8.6: |
Mathematical Logic / 8.7: |
Proof Theory Versus Model Theory / 9.1: |
A Language of Boolean Ground Terms / 9.3: |
Languages of Propositional Logic / 9.4: |
Languages of Predicate Logic / 9.5: |
Axiom Systems / 9.6: |
Simple RSL / 9.7: |
General |
RSL Versus VDM-SL, Z and B |
What, Syntactically, Constitutes a Specification? |
Towards an RSL "Standard" |
RSL Tools |
Atomic Types and Values in RSL / 10: |
The RSL Numbers / 10.1: |
Enumerated Tokens / 10.3: |
Characters and Texts / 10.4: |
Identifiers and General Tokens / 10.5: |
Function Definitions in RSL / 10.6: |
The Function Type / 11.1: |
Model-Oriented Explicit Definitions / 11.2: |
Model-Oriented Axiomatic Definitions / 11.3: |
Model-Oriented pre/post-Condition Definitions / 11.4: |
Property-Oriented Axiomatic Definitions / 11.5: |
Property-Oriented Algebraic Definitions / 11.6: |
Summary of RSL Function Definition Styles / 11.7: |
Property-Oriented and Model-Oriented Abstraction / 11.8: |
Abstraction / 12.1: |
Property-Oriented Abstractions / 12.2: |
Model Versus Property Abstractions / 12.3: |
Model-Oriented Abstractions / 12.4: |
Principles, Techniques and Tools / 12.5: |
Sets: The Issues / 12.6: |
The Set Data Type / 13.2: |
Examples of Set-Based Abstractions / 13.3: |
Abstracting and Modelling With Sets / 13.4: |
Inductive Set Definitions / 13.5: |
A Comment on Varying Sets / 13.6: |
Cartesians: The Issues / 13.7: |
The Cartesian Data Type / 14.2: |
Examples of Cartesian Abstractions / 14.3: |
Abstracting and Modelling with Cartesians / 14.4: |
Inductive Cartesian Definitions / 14.5: |
Lists in RSL / 14.6: |
Issues Related to Lists / 15.1: |
The List Data Type / 15.2: |
Small Examples of List-Based Abstractions / 15.3: |
Abstracting and Modelling with Lists / 15.4: |
Inductive List Definitions / 15.5: |
A Review of List Abstractions and Models / 15.6: |
Lists: A Discussion / 15.7: |
Maps in RSL / 15.8: |
The Map Data Type / 16.1: |
Examples of Map-Based Abstractions / 16.3: |
Abstracting and Modelling with Maps / 16.4: |
Inductive Map Definitions / 16.5: |
A Review of Map Abstractions and Models / 16.6: |
Maps: A Discussion / 16.7: |
Higher-Order Functions in RSL / 16.8: |
Functions: The Issues / 17.1: |
Examples Using Function-Based Abstractions / 17.2: |
Abstracting and Modelling With Functions / 17.3: |
Inductive Function Definitions / 17.4: |
Review of Function Abstractions and Models / 17.5: |
Specification Types / 17.6: |
Types in RSL / 18: |
Type Categories / 18.1: |
Enumerated Token Types Revisited / 18.3: |
Records: Constructors and Destructors / 18.4: |
Union Type Definitions / 18.5: |
Short Record Type Definitions / 18.6: |
Type Expressions, Revisited / 18.7: |
Subtypes / 18.8: |
Type Definitions, Revisited / 18.9: |
On Recursive Type Definitions / 18.10: |
Specification Programming / 18.11: |
On Specification Programming |
On Problems and Exercises |
Applicative Specification Programming / 19: |
Scope and Binding / 19.1: |
Intuition / 19.2: |
Operator/Operand Expressions / 19.3: |
Enumerated and Comprehended Expressions / 19.4: |
Conditional Expressions / 19.5: |
Bindings, Typings, Patterns and Matching / 19.6: |
Review and Discussion / 19.7: |
Imperative Specification Programming / 19.8: |
Imperative Combinators: A [lambda]-Calculus / 20.1: |
Variable References: Pointers / 20.3: |
Function Definitions and Expressions / 20.4: |
Translations: Applicative to Imperative / 20.5: |
Styles of Configuration Modelling / 20.6: |
Concurrent Specification Programming / 20.7: |
Behaviour and Process Abstractions / 21.1: |
Communicating Sequential Processes, CSP / 21.2: |
The RSL/CSP Process Combinators / 21.4: |
Translation Schemas / 21.5: |
Parallelism and Concurrency: A Discussion / 21.6: |
And So On! / 21.7: |
Etcetera! / 22: |
What Have We Covered? / 22.1: |
What Is Next? / 22.2: |
What Is Next-Next? / 22.3: |
A Caveat / 22.4: |
Formal Methods "Lite" / 22.5: |
Appendixes / 22.6: |
Common Exercise Topics / A: |
Transportation Nets / A.1: |
Container Logistics / A.2: |
Financial Service Industry / A.3: |
Summary References to Exercises / A.4: |
Glossary / B: |
Categories of Reference Lists / B.1: |
Typography and Spelling / B.2: |
The Glosses / B.3: |
Indexes / C: |
Symbols Index / C.1: |
Concepts Index / C.2: |
Characterisations and Definitions Index / C.3: |
Authors Index / C.4: |
References |
Preface |
Reasons for Writing These Volumes |
Shortcomings of These Volumes |
Methods of Approach |
A New Look at Software |
Formal Techniques "Light" |