Foundations of Algebraic Specification and Formal Software Development

This book provides foundations for software specification and formal software development from the perspective of work on algebraic specification. It concentrates on developing basic concepts and studying their fundamental properties.

Saved in:
Bibliographic Details
Main Authors Sannella, Donald, Tarlecki, Andrzej
Format eBook Book
LanguageEnglish
Published Berlin, Heidelberg Springer Nature 2012
Springer
Springer Berlin / Heidelberg
Springer Berlin Heidelberg
Edition1
SeriesMonographs in Theoretical Computer Science. An EATCS Series
Subjects
Online AccessGet full text
ISBN3642173365
9783642173363
9783642173356
3642173357
ISSN1431-2654
DOI10.1007/978-3-642-17336-3

Cover

Table of Contents:
  • 8.3.1 Behavioural satisfaction vs. behavioural abstraction -- 8.4 Behavioural implementations -- 8.4.1 Implementing specifications up to behavioural equivalence -- 8.4.2 Stepwise development and stability -- 8.4.3 Stable and behaviourally trivial constructors -- 8.4.4 Global stability and behavioural correctness -- 8.4.5 Summary -- 8.5 To partial algebras and beyond -- 8.5.1 Behavioural specifications in FPL -- 8.5.2 A larger example -- 8.5.3 Behavioural specifications in an arbitrary institution -- 8.5.3.1 INS-behavioural abstraction and implementations -- 8.5.3.2 INS-behavioural morphisms -- 8.5.3.3 Observing computations -- 8.6 Bibliographical remarks -- Chapter 9 Proofs for specifications -- 9.1 Entailment systems -- 9.2 Proof in structured specifications -- 9.3 Entailment between specifications -- 9.4 Correctness of constructor implementations -- 9.5 Proof and parameterisation -- 9.6 Proving behavioural properties -- 9.6.1 Behavioural consequence -- 9.6.2 Behavioural consequence for specifications -- 9.6.3 Behavioural consequence between specifications -- 9.6.4 Correctness of behavioural implementations -- 9.6.5 A larger example, revisited -- 9.7 Bibliographical remarks -- Chapter 10 Working with multiple logical systems -- 10.1 Moving specifications between institutions -- 10.1.1 Institution semi-morphisms -- 10.1.2 Duplex institutions -- 10.1.3 Migrating specifications -- 10.2 Institution morphisms -- 10.3 The category of institutions -- 10.4 Institution comorphisms -- 10.5 Bibliographical remarks -- Bibliography -- Index of categories and functors -- Index of institutions -- Index of notation -- Index of concepts
  • Intro -- Foundations of Algebraic Specification and Formal Software Development -- Preface -- Contents -- Introduction -- 0.1 Modelling software systems as algebras -- 0.2 Specifications -- 0.3 Software development -- 0.4 Generality and abstraction -- 0.5 Formality -- 0.6 Outlook -- Chapter 1 Universal algebra -- 1.1 Many-sorted sets -- 1.2 Signatures and algebras -- 1.3 Homomorphisms and congruences -- 1.4 Term algebras -- 1.5 Changing signatures -- 1.5.1 Signature morphisms -- 1.5.2 Derived signature morphisms -- 1.6 Bibliographical remarks -- Chapter 2 Simple equational specifications -- 2.1 Equations -- 2.2 Flat specifications -- 2.3 Theories -- 2.4 Equational calculus -- 2.5 Initial models -- 2.6 Term rewriting -- 2.7 Fiddling with the definitions -- 2.7.1 Conditional equations -- 2.7.2 Reachable semantics -- 2.7.3 Dealing with partial functions: error algebras -- 2.7.4 Dealing with partial functions: partial algebras -- 2.7.5 Partial functions: order-sorted algebras -- 2.7.6 Other options -- 2.8 Bibliographical remarks -- Chapter 3 Category theory -- 3.1 Introducing categories -- 3.1.1 Categories -- 3.1.1.1 Foundations -- 3.1.2 Constructing categories -- 3.1.2.1 Subcategories -- 3.1.2.2 Opposite categories and duality -- 3.1.2.3 Product categories -- 3.1.2.4 Morphism categories -- 3.1.3 Category-theoretic definitions -- 3.1.3.1 Epimorphisms and monomorphisms -- 3.1.3.2 Isomorphic objects -- 3.2 Limits and colimits -- 3.2.1 Initial and terminal objects -- 3.2.1.1 Dually: -- 3.2.2 Products and coproducts -- 3.2.2.1 Dually: -- 3.2.3 Equalisers and coequalisers -- 3.2.3.1 Dually: -- 3.2.4 Pullbacks and pushouts -- 3.2.4.1 Dually: -- 3.2.5 The general situation -- 3.3 Factorisation systems -- 3.4 Functors and natural transformations -- 3.4.1 Functors -- 3.4.2 Natural transformations -- 3.4.3 Constructing categories, revisited
  • 3.4.3.1 Comma categories -- 3.4.3.2 Indexed categories -- 3.4.3.3 Functor categories -- 3.4.3.4 Equivalence of categories -- 3.5 Adjoints -- 3.5.1 Free objects -- 3.5.2 Left adjoints -- 3.5.3 Adjunctions -- 3.6 Bibliographical remarks -- Chapter 4 Working within an arbitrary logical system -- 4.1 Institutions -- 4.1.1 Examples of institutions -- 4.1.2 Constructing institutions -- 4.2 Flat specifications in an arbitrary institution -- 4.3 Constraints -- 4.4 Exact institutions -- 4.4.1 Abstract model theory -- 4.4.2 Free variables and quantification -- 4.4.2.1 Universal quantification -- 4.5 Institutions with reachability structure -- 4.5.1 The method of diagrams -- 4.5.2 Abstract algebraic institutions -- 4.5.3 Liberal abstract algebraic institutions -- 4.5.4 Characterising abstract algebraic institutions that admit reachable initial models -- 4.6 Bibliographical remarks -- Chapter 5 Structured specifications -- 5.1 Specification-building operations -- 5.2 Towards specification languages -- 5.3 An example -- 5.4 A property-oriented semantics of specifications -- 5.5 The category of specifications -- 5.6 Algebraic laws for structured specifications -- 5.7 Bibliographical remarks -- Chapter 6 Parameterisation -- 6.1 Modelling generic modules -- 6.2 Specifying generic modules -- 6.3 Parameterised specifications -- 6.4 Higher-order parameterisation -- 6.5 An example -- 6.6 Bibliographical remarks -- Chapter 7 Formal program development -- 7.1 Simple implementations -- 7.2 Constructor implementations -- 7.3 Modular decomposition -- 7.4 Example -- 7.5 Bibliographical remarks -- Chapter 8 Behavioural specifications -- 8.1 Motivating example -- 8.2 Behavioural equivalence and abstraction -- 8.2.1 Behavioural equivalence -- 8.2.2 Behavioural abstraction -- 8.2.3 Weak behavioural equivalence -- 8.3 Behavioural satisfaction
  • Intro -- Foundations of Algebraic Specification and Formal Software Development -- Preface -- Contents -- Introduction -- Chapter 1 Universal algebra -- Chapter 2 Simple equational specifications -- Chapter 3 Category theory -- Chapter 4 Working within an arbitrary logical system -- Chapter 5 Structured specifications -- Chapter 6 Parameterisation -- Chapter 7 Formal program development -- Chapter 8 Behavioural specifications -- Chapter 9 Proofs for specifications -- Chapter 10 Working with multiple logical systems -- Bibliography -- Index of categories and functors -- Index of institutions -- Index of notation -- Index of concepts