+612 9045 4394
 
CHECKOUT
Constructing Correct Software : Formal Approaches to Computing and Information Technology, - John Cooke

Constructing Correct Software

Formal Approaches to Computing and Information Technology,

Paperback

Published: 8th November 2004
Ships: 15 business days
15 business days
$173.29
or 4 easy payments of $43.32 with Learn more

Central to Formal Methods is the so-called Correctness Theorem which relates a specification to its correct Implementations. This theorem is the goal of traditional program testing and, more recently, of program verification (in which the theorem must be proved). Proofs are difficult, though even with the use of powerful theorem provers. This volume explains and illustrates an alternative method, which allows the construction of (necessarily correct) algorithms from a specification using algebraic transformations and refinement techniques which prevent the introduction of errors. Based on teaching material used extensively at Loughborough University, John Cooke introduces the basics, using simple examples and lots of detailed working (which can often be re-used). Constructing Correct Software will provide invaluable reading for students and practitioners of Computer Science and Software Engineering to whom correctness of software is of prime importance.

Abridged Preface to First Editionp. v
Preface to Second Editionp. xi
Introductionp. 1
What Is this Book About?p. 1
Some Terminologyp. 2
How Might Programs Fail?p. 3
A Way Forwardp. 10
On Mathematicsp. 12
Linking Paradigmsp. 13
Problem Solvingp. 15
The Book Planp. 22
Preliminariesp. 29
The Technical Backgroundp. 31
Introductionp. 31
Functions, Relations and Specificationsp. 35
Summary of Featuresp. 49
Guidelines for Specificationsp. 50
Equational Reasoning and Typesp. 51
The Origin and Application of Rulesp. 55
Data Typesp. 61
A Glimpse at the Integersp. 61
Logical Typesp. 66
The Boolean Type, IBp. 66
Implication and Deductionp. 72
Boolean Quantifiersp. 76
Extended (3-valued) Logicp. 78
Setsp. 91
Integersp. 96
Inequalitiesp. 99
Bagsp. 101
Listsp. 103
Records and n-tuplesp. 107
Union Typesp. 109
Sub-types and Sub-rangesp. 110
Type Transfer Functions and Castsp. 111
Data Types and Transformationsp. 114
On Quantificationp. 116
Applying Unfold/Fold Transformationsp. 118
On Programmingp. 125
Overviewp. 126
Procedural Programmingp. 127
'Good' Programmingp. 130
Structuring and (control) Flowchartsp. 131
PDL Overviewp. 134
"Let" and "Where"p. 138
Scope and Parametersp. 139
Comments and Assertionsp. 139
Verification of Procedural Programsp. 146
Sequencingp. 147
Alternationp. 149
Iterationp. 150
Program Derivationp. 154
Fundamentalsp. 159
Algorithm Extractionp. 161
Overviewp. 162
On Converging Recursionp. 164
Design Tacticsp. 169
Checking Perceived Answersp. 172
Problem Reductionp. 175
Problem Decompositionp. 182
Structural Splittingp. 185
Predicated Splittingp. 201
Mixed Strategiesp. 201
Domain Partitioningp. 202
The Use of Analogyp. 203
'Eureka' Processesp. 206
Summaryp. 221
Recursion Removalp. 223
Tail Recursionp. 225
Associative Recursionp. 238
Up and Down Iterationp. 249
Speeding up Iteratonsp. 257
Recursive Proceduresp. 262
Summaryp. 265
Quantificationsp. 267
Overviewp. 268
Defining Composite Valuesp. 268
Derived Composite Valuesp. 270
1-place Functionsp. 270
2-place Functionsp. 272
Application to Program Developmentp. 277
1-place Functionsp. 278
2-place Functionsp. 280
An Extended Example: The Factorial Functionp. 282
Some Rules for Quantificationsp. 291
General Rulesp. 292
Special Rules for Logical Quantifiersp. 298
Summaryp. 300
Refinement and Re-usep. 301
Operational Refinementp. 302
On Correctnessp. 302
Some Properties of Design Refinementp. 307
An Alternative Viewp. 309
Re-using Designsp. 310
Developmentsp. 315
Sortingp. 317
Specification and Initial Discussionp. 317
Initial Designsp. 323
Problem Reductionp. 323
Structural Splittingp. 326
Predicated Splitting (Partitioning)p. 333
Complete Designsp. 341
Exchange Sortsp. 341
Merge Sortsp. 347
The Basic Merge Sortp. 347
Partition Sortsp. 348
Simple Partition Sortp. 350
A Quick Designp. 352
Data Refinementp. 357
On 'Internal' Data Typesp. 358
Changing Data Typesp. 358
Where to next?p. 370
Sorting Revisitedp. 375
Exchange Sortsp. 375
Merge Sortsp. 383
Variants of the Merge Sortp. 384
Partition Sortsp. 390
Failures and Fixesp. 409
Inadequate Pre-Conditionsp. 410
Failures in Structural Splittingp. 411
Loss of Vital Informationp. 412
Further Examplesp. 417
The 2-D Convex Hullp. 418
Topological Sortp. 424
Experimentationp. 425
A Proper Formulationp. 433
Some 'Extremal' Problemsp. 439
On Interactive Softwarep. 455
Specifications Involving Changep. 457
Specifications of Input/Outputp. 457
Conventional Communicationsp. 463
The Enabling of Computationsp. 466
Pertaining to (Software) Systemsp. 466
System Requirementsp. 467
Specifying Systemsp. 469
Transformation Digestp. 473
Re-write Rule Conventionsp. 473
Data Manipulation Rulesp. 473
The Type IBp. 475
Extended Logic and Conditional Expressionsp. 477
Integersp. 479
Setsp. 480
Bagsp. 482
Listsp. 483
Common Conversion Functionsp. 485
Quantifier Rulesp. 486
Quantifier Propertiesp. 490
'Not Occurs in'p. 491
On PDL Structurep. 492
Scope and Parametersp. 494
PDL Transformation Rulesp. 495
Bibliographyp. 501
Indexp. 503
Table of Contents provided by Ingram. All Rights Reserved.

ISBN: 9781852338206
ISBN-10: 1852338202
Series: Formal Approaches to Computing and Information Technology,
Audience: General
Format: Paperback
Language: English
Number Of Pages: 509
Published: 8th November 2004
Publisher: Springer London Ltd
Country of Publication: US
Dimensions (cm): 23.27 x 16.36  x 2.46
Weight (kg): 0.75
Edition Number: 2
Edition Type: Revised