More than anything else, this book is a tribute to Edsger W. Dijkstra, on the occasion of his sixtieth birthday, by just a few of those fortunate enough to be influenced by him and his work and to be called his friend or relation, his master, colleague, or pupil. This book contains fifty-four technical contributions in different areas of endeavor, although many of them deal with an area of particular concern to Dijkstra: programming. Each contribution is relatively short and could be digested in one sitting. Together, they form a nice cross section of the discipline of programming at the beginning of the nineties. While many know of Dijkstra's technical contributions, they may not be aware of his ultimate goal, the mastery of complexity in mathematics and computing science. He has forcefully argued that beauty and elegance are essential to this mastery. The title of this book, chosen to reflect his ultimate goal, comes from a sentence in an article of his on some beautiful arguments using mathematical induction: "... when we recognize the battle against chaos, mess, and unmastered complexity as one of computing sci - ence's major callings, we must admit that 'Beauty Is Our Business'. "
0 Proving Termination of Parallel Programs.- 1 On a Relation on Functions.- 2 Efficient Solution of a Non-Monotonic Inverse Problem.- 3 Semantics of Quasi-Boolean Expressions.- 4 Small Specification Exercises.- 5 Architecture of Real-Time Systems.- 6 The Use of a Formal Simulator to Verify a Simple Real Time Control Program.- 7 Exploring the Future: Trends and Discontinuities.- 8 On a Renewed Visit to the Banker and a Remarkable Analogy.- 9 On Bounded Buffers: Modularity, Robustness, and Reliability in Reactive Systems.- 10 Examples in Program Composition.- 11 On the Mechanism of the Hydrogenation of Edible Oils.- 12 The Problem of the Majority Network.- 13 A Little Exercise in Deriving Multiprograms.- 14 Experimenting with a Refinement Calculus.- 15 Serializable Programs, Parallelizable Assertions: A Basis for Interleaving.- 16 Binary to Decimal, One More Time.- 17 Rotate and Double.- 18 Beautifying Gödel.- 19 A Striptease of Entropy.- 20 On a Theorem of Jacobson.- 21 Modalities of Nondeterminacy.- 22 A Theory for the Derivation of C-mos Circuit Designs.- 23 On Mathematical Induction and the Invariance Theorem.- 24 Formalizing Some Classic Synchronization Primitives.- 25 Consequences.- 26 Shortest and Longest Segments.- 27 A Simple Program Whose Proof Isn't.- 28 Binding Structure and Behaviour in "Whole Net" Concurrency Semantics.- 29 Maximal Strong Components: An Exercise in Program Presentation.- 30 A Systolic Program for Gauss-Jordan Elimination.- 31 Coding for Channels with Localized Errors.- 32 Topology-Independent Algorithms Based on Spanning Trees.- 33 An Exercise in the Verification of Multi-Process Programs.- 34 The Limitations to Delay-Insensitivity in Asynchronous Circuits.- 35 A Simple Proof of a Simple Consensus Algorithm.- 36 Of wp and CSP.- 37 Programming by Expression Refinement: the KMP Algorithm.- 38 Methodical Competitive Snoopy-Caching.- 39 Beauty and the Beast of Software Complexity - Elegance versus Elephants.- 40 A Note on Feasibility.- 41 A Curious Property of Points and Circles in the Plane.- 42 A Problem Involving Subsequences.- 43 A Personal Perspective of the Alpern-Schneider Characterization of Safety and Liveness.- 44 Simpler Proofs for Concurrent Reading and Writing.- 45 Goodbye Junctivity?.- 46 An Assignment Problem for the Vertices of a Cycle.- 47 Duality and De Morgan Principles for Lists.- 48 The Quest for Timeless Specifications Leads to Non-Stepping Automata.- 49 The Maximum Length of a Palindrome in a Sequence.- 50 On Form, Formalism and Equivalence.- 51 Drawing Lines, Circles, and Ellipses in a Raster.- 52 Calculations with Relations, an Example.- 53 Two Proofs for Pythagoras.
A collection of contributions on programming theory in computer science and mathematics, celebrating the work of Edsger W. Dijkstra.