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

By Eric C.R. Hehner

There are a number of theories of programming. the 1st usable thought, referred to 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 can be outlined in due course). one other renowned and heavily similar idea by way of Dijkstra makes use of the weakest precondition predicate transformer, that's a functionality from courses and postconditions to preconditions. lones's Vienna improvement process 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 good judgment is yet one more formalism that introduces a few certain operators and quantifiers to explain a few facets of computation. the speculation during this publication is easier than any of these simply pointed out. In it, a specification is simply a boolean expression. Refinement is simply usual implication. This conception can also be extra common than these simply pointed out, employing 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 type and for tightly restricted real-time functions

Show description

Read Online or Download A Practical Theory of Programming PDF

Best programming languages books

Upc: Distributed Shared Memory Programming

This can be the 1st e-book to give an explanation for the language Unified Parallel C and its use. Authors El-Ghazawi, Carlson, and Sterling are one of the builders of UPC, with shut hyperlinks with the economic contributors of the UPC consortium. Their textual content covers historical past fabric on parallel architectures and algorithms, and contains UPC programming case experiences.

Geschichte der Nachrichtentechnik: Band 2 Nachrichtentechnische Entwicklungen in der ersten Hälfte des 19. Jahrhunderts

Die Geschichte der Nachrichtentechnik, dargestellt in Band 1 von den Anfängen im Altertum bis zum Ende des 18. Jahrhunderts, wird hiermit fortgeführt und behandelt die stürmische Entwicklung, in der mit dem Galvanismus und dem Elektromagnetismus die wesentlichen Grundlagen für die "elektrische Nachrichtentechnik" gelegt wurden.

Apple IIc and IIe Assembly Language

The Apple / / sequence of pcs represents the most flexible and robust domestic pcs on hand. If you've gotten used your desktop for some time, you have most likely develop into really conversant in Applesoft simple. that is stable, simply because when you recognize that, this ebook will allow you to graduate from uncomplicated programming to meeting language programming.

Software Engineering (6th Edition)

The object used to be very much. it used to be faultless. it was once shipped in a well timed demeanour. the object used to be precisely what i ordered. i'd absolutely purchase from this vendor back. i used to be very happy.

Additional info for A Practical Theory of Programming

Example text

We are specifying computer behavior, and (for now) the quantities of interest are the prestate σ and the poststate σ′ . We provide a prestate as input. A computation then delivers (computes) a poststate as output. To satisfy a specification, a computation must deliver a satisfactory poststate. In other words, the given prestate and the computed poststate must make the specification true. We have an implementation when the specification describes (is true of) every computation. For a specification to be implementable, there must be at least one satisfactory output state for each input state.

20); char; rat] If the memory is in state σ , then the items in memory are σ 0 , σ 1 , σ 2 , and so on. Instead of using addresses, we find it much more convenient to refer to items in memory by distinct names such as i , n , c , and x . Names that are used to refer to components of the state are called state variables. We must always say what the state variables are and what their domains are, but we do not bother to say which address a state variable corresponds to. A state is then an assignment of values to state variables.

To answer, we must first state formally what it means to move x farther from zero: abs x′ > abs x (where abs is the absolute value function; its definition can be found in Chapter 11). We now calculate (the exact precondition for abs x′ > abs x to be refined by x:= x2 ) = ∀x′· abs x′ > abs x ⇐ x′ = x2 One-Point Law 2 ) > abs x by the arithmetic properties of abs x and x2 = abs (x = x+–1 ∧ x+0 ∧ x+1 (the exact postcondition for abs x′ > abs x to be refined by x:= x2 ) = ∀x· abs x′ > abs x ⇐ x′ = x2 after several steps including domain splitting and variable change and using the arithmetic properties of abs x and x2 = x′+0 ∧ x′+1 If x starts anywhere but –1 , 0 , or 1 , we can be sure it will move farther from zero; if x ends anywhere but 0 or 1 , we can be sure it did move farther from zero.

Download PDF sample

Rated 4.04 of 5 – based on 15 votes