A Practical Theory of Programming by Eric C.R. Hehner

By Eric C.R. Hehner

There are numerous theories of programming. the 1st usable conception, known as ''Hoare's Logic'', continues to be essentially the most widely recognized. In it, a specification is a couple of predicates: a precondition and postcondition (these and all technical phrases may be outlined in due course). one other well known and heavily similar thought via Dijkstra makes use of the weakest precondition predicate transformer, that is a functionality from courses and postconditions to preconditions. lones's Vienna improvement technique has been used to virtue in a few industries; in it, a specification is a couple of predicates (as in Hoare's Logic), however the moment predicate is a relation. Temporal common sense is another formalism that introduces a few detailed operators and quantifiers to explain a few points of computation. the speculation during this booklet is easier than any of these simply pointed out. In it, a specification is simply a boolean expression. Refinement is simply traditional implication. This conception can be extra basic than these simply pointed out, utilising to either terminating and nonterminating computation, to either sequential and parallel computation, to either stand-alone and interactive computation. And it comprises time bounds, either for set of rules class and for tightly restricted real-time functions

Show description

Read Online or Download A Practical Theory of Programming PDF

Best programming languages books

TCP/IP Analysis and Troubleshooting Toolkit

A must have advisor for troubleshooting and interpreting TCP/IP on the web and company networkFollows a realistic method of make sure that TCP/IP remains up and runningDescribes difficulties in line with real eventualities within the box and offers confirmed ideas to accommodate themExplains how one can use on hand instruments and utilities to their greatest advantageCompanion website comprises samples eventualities and code from the ebook

Smalltalk-80: The Language and its Implementation

Desk OF CONTENTS: (1) items and Messages (2) Expression Syntax (3) sessions and circumstances (4) Subclasses (5) Metaclasses (6) Protocol for all gadgets (7) Linear Measures (8) Numerical periods (9) Protocol for All assortment periods (10) Hierarchy of the gathering sessions (11) 3 Examples that Use Collections (12) Protocol for Streams (13) Implementation of the elemental assortment Protocol (14) Kernel aid (15) a number of autonomous procedures (16) Protocol sessions (17) The Programming Interface (18) photos Kernel (19) Pens (20) show gadgets (21) chance Distributions (22) Event-Driven Simulations (23) statistics collecting in Event-Driven Simulations (24) using assets in Event-Driven Simulations (25) Coordinated assets for Event-Driven Simulations (26) The Implementation (27) Specification of the digital desktop (28) Formal Specification of the Interpreter (29) Formal Specification of the Primitive equipment (30) Formal Specification of the item reminiscence.

Nominal Sets: Names and Symmetry in Computer Science

Nominal units offer a promising new mathematical research of names in formal languages established upon symmetry, with many functions to the syntax and semantics of programming language constructs that contain binding, or localising names. half I offers an advent to the fundamental thought of nominal units.

Agile ALM: Lightweight tools and Agile strategies

Agile ALM is a advisor for Java builders who are looking to combine versatile agile practices and light-weight tooling alongside all levels of the software program improvement technique. The publication introduces a brand new imaginative and prescient for dealing with switch in specifications and technique extra successfully and flexibly. It synthesizes technical and useful parts to supply a entire method of software program improvement.

Additional info for A Practical Theory of Programming

Sample text

S′ = ΣL ⇐ s:= 0. n:= 0. ) This theorem is easily proven by two applications of the Substitution Law. #L] . When we refine this new problem, we must ignore the context in which it arose; in particular, we ignore that s=0 ∧ n=0 . The new specification represents the problem when n items have been summed and the rest remain to be summed, for arbitrary n . One of the possible values for n is #L , which means that all items have been summed. That suggests that we use Case Creation next. #L] Now we have two new problems, but one is trivial.

The result is = ( 3 〈x→ x 〉 3 ) 3 Function Theory 26 Here is a worse example. Suppose x is a nonlocal variable, and we reintroduce it in an inner scope. 〈y→ x y 〈x→ x y 〉 x y 〉x The Application Axiom tells us to substitute x for all occurrences of y . All three uses of y are the variable introduced by the outer scope, so all three must be replaced by the nonlocal x used as argument. But that will place a nonlocal x inside a scope that reintroduces x , making it look local. Before we substitute, we must use the Renaming Axiom for the inner scope.

Of course, parentheses may be used around any expression, so we may write f(x) if we want. If either the function or the argument is not simple, we will have to enclose it in parentheses. When there is no danger of confusion, we may write fx without a space between, but when we use multicharacter names, we must put a space between the function and the argument. As an example of application, if suc = 〈n: nat→n+1〉 , then suc 3 = 〈n: nat→n+1〉 3 = 3+1 = 4 Here is the Application Axiom. If element x: D , then 〈v: D→b〉 x = (substitute x for v in b ) Operators and functions are similar; just as we apply operator – to operand x to get –x , we apply function f to argument x to get f x .

Download PDF sample

Rated 4.73 of 5 – based on 26 votes