28 citations found. Retrieving documents...
J. C. Reynolds. The Craft of Programming. Prentice Hall, 1981. (p. 125)

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:
Semantic and Syntactic Approaches to Simulation Relations - Hannay, Katsumata, Sannella (2003)   (Correct)

....project (IST 2001 33149) which is funded by the EC under the FET proactive initiative on Global Computing. SK was supported by an LFCS studentship. When the language in question is the simply typed lambda calculus, the standard choice of simulation relation which originates with Reynolds in [Rey81,Rey83] but is described most clearly in [Ten94] cf. Mit96] is to use a logical relation, a type indexed family of relations that respects not just function application (like homomorphisms) but also lambda abstraction. Logical relations are used extensively in the study of typed lambda calculus and ....

J. Reynolds. The Craft of Programming. Prentice Hall (1981).


Programming As An Engineering Discipline - Reinfelds (2002)   (Correct)

....FORTRANs, because mainframe manufacturers encouraged their compiler writers to trump the so far undefined semantics as well as the loosely defined syntax of all other FORTRAN implementations. Without a theory that programmers could use, programming developed as an art [2] and as a craft [3], but not as an engineering discipline. Perhaps because of such casual beginnings, engineers saw computers as super accurate, super fast slide rules, the use of which can be self taught over the proverbial weekend rather than as an essential engineering discipline that needs to be developed as ....

Reynolds, John C., The Craft of Programming, Prentice Hall, (1981).


Optimizing Aggregate Array Computations in Loops - Liu, Stoller, Li, Rothamel   (Correct)

....CIP [7, 11, 60] In contrast to such manual or semi automatic approaches, our optimization of aggregate array computations is fully automatable and requires no user intervention or annotations. Our method for maintaining additional values is an automatic method for strengthening loop invariants [18, 35, 36, 68]. Directionals are unary operations, such as LEFT and UP, invented by Fisher and Highnam [25, 26, 39] to describe computations involving small numbers of neighboring nodes on grid structures. Such computations are optimized by rule based transformations and common subexpression elimination, ....

J. C. Reynolds. The Craft of Programming. Prentice-Hall, 1981.


A Security-Property Language for Self-Certified Code - Bernard (1999)   (Correct)

....ned by ghost p = E = reg p : save p eval proc ) p : E restore p must occur after the last reference to p, and all references to p must follow ghost p; p must not be otherwise assigned. The ghost derived form employs property registers as ghost (or auxiliary logical) variables [Rey81] 4.2.4 Callee Save Registers A security property may require that a machine register r be preserved by a procedure F ; i.e. r is a callee save register for F . The expansion of cs is de ned by cs F; r = reg s r : nat eval proc F ) s r : upd nat; s r ; i; r) safe proc F ....

John C. Reynolds. The Craft of Programming. Prentice Hall, 1981.


Program Specification - Gordon (2001)   (Correct)

....T (for true ) is the condition that is always true. In Examples 3, 4 and 7, is the logical operator and , i.e. if P 1 and P 2 are conditions, then P 1 P 2 is the condition that is true whenever both P 1 and P 2 hold. 4 This example is taken from Exercise 2 on page 17 of Reynolds s book [24]. 1.4. SOME EXAMPLES 7 1. fX = 1g Y: X fY = 1g This says that if the command Y: X is executed in a state satisfying the condition X = 1 (i.e. a state in which the value of X is 1) then, if the execution terminates (which it does) then the condition Y = 1 will hold. Clearly this speci cation ....

....intended semantics of FOR commands in Floyd Hoare logic. Axioms and rules are given here that appear to be sound, but they are not necessarily complete (see Section 2. 2) An early reference on the logic of FOR commands is Hoare s 1972 paper [9] a comprehensive treatment can be found in Reynolds [24]. The intention here in presenting the FOR rule is to show that Floyd Hoare logic can get very tricky. All the other axioms and rules were quite straightforward and may have given a false sense of simplicity: it is very dicult to give adequate rules for anything other than very simple programming ....

Reynolds, J.C., The Craft of Programming, Prentice Hall, London, 1981.


Software Engineering Education: Roles of Formal.. - Bjørner.. (1998)   (Correct)

....well as those of formal specification and design calculi such as the broad range techniques of VDM [14, 69, 40] Z [105] Larch [52] RAISE [47, 48] and B [2] etc. as well as the more calculi oriented: The Discipline of Programming [34] The Science of Programming [45] The Craft of Programming [101] and The Logic of Programming [58, 46] including the refinement calculi oriented [85] 4 See also [50, 87, 115] 6 D.Bjrner and J.R.Cu ellar: Software Engineering Education A recent programming methodology discipline to receive seminal treatment is that of reactive systems [26, 78, 79] The ....

J.C. Reynolds. The Craft of Programming. Prentice-Hall, 1981.


Strengthening Invariants for Efficient Computation - Liu, Stoller, Teitelbaum (2001)   (Correct)

....be used to derive rules that maintain these expressions. In general, such rules apply only to very high level languages like SETL; our method applies also to lower level languages like Lisp or Java. Maintaining and strengthening loop invariants has been advocated by Dijkstra, Gries, and others [21,31,32,74] for almost two decades as a standard strategy for developing loops. In order to produce ecient programs, loop invariants need to be maintained by the derived programs in an incremental fashion. To 34 make a loop more ecient, the strategy of strengthening a loop invariant, often by introducing ....

J. C. Reynolds. The Craft of Programming. Prentice-Hall, Englewood Cli s, N.J., 1981.


Predicate Transformer Semantics of a Higher Order Imperative.. - Naumann (1998)   (3 citations)  (Correct)

....problematic features are restricted in Oberon like languages. The crucial restriction is that external variables of stored procedures are declared in the outermost scope only; globals are global to the whole program. Other restrictions are imposed in proof rules for procedure calls [9, 44, 16, 21] to preclude forms of aliasing that are only amenable to reasoning in terms of pointers. Taken together, these restrictions make possible a simple abstract semantics. We show that the semantics validates practical proof rules as well as program equivalences that pose challenges for Algol. ....

....types, even in the presence of subtyping. 3 We also show how higher level object oriented constructs can be expressed in Io. 3 There has been work on rst order partial correctness logics for programs with procedure type parameters [22] but higher order logic seems more natural and practical [41, 44, 16], and perhaps essential for stored procedures. 2 [x : f ] Q e) x 7 f ] post x) substitutions and overriding : left associative) function application : function composition, typing ; listing y function restriction, predicate lifting [ set theoretic operations = 2 v : v ....

[Article contains additional citation context not shown here]

J. C. Reynolds. The Craft of Programming. Prentice-Hall, 1981.


Constructive Data Refinement in Typed Lambda Calculus - Honsell, Longley.. (2000)   (4 citations)  (Correct)

....computed by the program: the concrete program should be equivalent to the abstract program in the sense that all computational observations should return the same results in both cases. The standard treatment of data refinement in the context of typed lambda calculus, originating with Reynolds in [Rey81,Rey83] but described most clearly in [Ten94] cf. Sect. 8.5 of [Mit96] uses logical relations to prove the correctness of refinements. This work has its roots in [Hoa72] which proposes that the correctness of the concrete program be verified using an invariant on the domain of concrete values together ....

J. Reynolds. The Craft of Programming. Prentice Hall (1981).


Efficient Computation via Incremental Computation - Liu (1999)   (Correct)

.... the work by Allen, Cocke, Kennedy, and others on strength reduction [4, 17, 34, 16, 5, 59, 42] by Earley on high level iterators [22] by Fong and Ullman 3 on inductive variables [28, 26, 27] by Paige, Schwartz, and Koenig on finite differencing [57, 61, 58] by Dijkstra, Gries, and Reynolds [21, 35, 74, 36] on maintaining and strengthening loop invariants, by Boyle, Moore, Manna, and Waldinger on induction, generalization, and deductive synthesis [13, 53, 54] by Dershowitz on extension techniques [20] by Bird on promotion and accumulation [9, 10] by Broy, Bauer, Partsch, and others on ....

J. C. Reynolds. The Craft of Programming. Prentice-Hall, Englewood Cliffs, N.J., 1981.


Predicate Transformer Semantics of a Higher Order Imperative.. - Naumann (1998)   (3 citations)  (Correct)

....implementation of late binding in object oriented programming. To facilitate efficient implementation, problematic features of Algol are absent (call by name) or restricted (global variables of procedures) in Oberon like languages. Other restrictions are imposed in proof rules for procedure calls [Bij93, Rey81a, DJ83, Fra92] to preclude forms of aliasing that are only amenable to reasoning in terms of pointers. This paper shows that these restrictions, taken together, give a higher order language with a simple abstract semantics. The semantics is operationally sound ( computationally adequate ) and we show the ....

....In particular it is shown that typed correctness statements can be used as predicates at higher types, even in the presence of subtyping. There has been work on first order logics for programs with procedure type parameters [GCH89] but higher order logic is more natural and practical [Old83, Rey81a, DJ83], especially for stored procedures. In summary, we lay a foundation for higher order programming calculus, under which a companion paper will lay the operational foundation. In much of the methodological literature, transformer semantics is presented semiformally. Transformers are often taken to ....

[Article contains additional citation context not shown here]

John C. Reynolds. The Craft of Programming. Prentice-Hall, 1981.


Loop Optimization for Aggregate Array Computations - Liu, Stoller (1998)   (3 citations)  (Correct)

....CIP [6, 9, 46] In contrast to such manual or semi automatic approaches, our optimization of aggregate array computations can be automated and requires no user intervention or annotations. Our method for maintaining additional information is an automatic method for strengthening loop invariants [14, 29, 30, 53]. Directionals are unary operations, such as LEFT and UP, invented by Fisher and Highnam [20, 21, 32] to describe computations involving small numbers of neighboring nodes on grid structures. Such computations are optimized by directional rule based transformations and common subexpression ....

J. C. Reynolds. The Craft of Programming. Prentice-Hall, Englewood Cliffs, N.J., 1981.


Incremental Computation: A Semantics-Based Systematic.. - Liu (1996)   (2 citations)  (Correct)

.... Kennedy, and others on strength reduction [All69,CS70,Gri71,CK77,ACK81] by Earley on high level iterators [Ear76] by Fong and Ullman on inductive variables [FU76,Fon77,Fon79] by Paige, Schwartz, and Koenig on finite differencing [PS77,Pai81,PK82] by Dijkstra, Gries, and Reynolds [Dij76,Gri81,Rey81,Gri84] on maintaining and strengthening loop invariants, by Boyle, Moore, Manna, and Waldinger on induction, generalization, and deductive synthesis [BM79,MW80,MW93] by Dershowitz on extension techniques [Der83] by Bird on promotion and accumulation [Bir84,Bir85] by Broy, Bauer, Partsch, etc. ....

....rules that maintain this information. Also, in general, Paige s rules apply only to very high level languages like SETL; our method applies also to normal high level languages like Lisp. Maintaining and strengthening loop invariants has been advocated by Dijkstra, Gries, and others [Dij76,Gri81,Rey81,Gri84] for almost two decades as a standard strategy for developing loops. In order to produce efficient programs, loop invariants need to be maintained by the derived programs in an incremental fashion. To make a loop more efficient, the strategy of strengthening a loop invariant, often by ....

John C. Reynolds. The Craft of Programming. Prentice-Hall, 1981. 127


Hidden Algebraic Engineering - Goguen (1997)   (2 citations)  (Correct)

....the topic. Perhaps the most recent really rigorous book is one that I wrote with Grant Malcolm [26] it aims at making the best possible use of computers for proofs, and in fact is executable in that all its proofs run. John Reynolds has written an excellent book in a more traditional style [50]. Some early history of initial algebra semantics for abstract data types was given at the end of Section 2.2; see also [18] It seems that algebraic specification may now be entering a golden age, in which new techniques are bringing old goals to fruition in unexpected ways, and are also opening ....

John C. Reynolds. The Craft of Programming. Prentice-Hall, 1981.


Specification and Verification - Gordon (1988)   (Correct)

....the condition that is always true. In Examples 3, 4 and 7, is the logical operator and , i.e. if P 1 and P 2 are conditions, then P 1 P 2 is the condition that is true whenever both P 1 and P 2 hold. 1. fX = 1g Y: X fY = 1g 4 This example is taken from Exercise 2 on page 17 of Reynolds s book [14]. 1.4. Some examples 7 This says that if the command Y: X is executed in a state satisfying the condition X = 1 (i.e. a state in which the value of X is 1) then, if the execution terminates (which it does) then the condition Y = 1 will hold. Clearly this specification is true. 2. fX = 1g Y: X ....

....intended semantics of FOR commands in Floyd Hoare logic. Axioms and rules are given here that appear to be sound, but they are not necessarily complete (see Section 2. 2) An early reference on the logic of FOR commands is Hoare s 1972 paper [9] a comprehensive treatment can be found in Reynolds [14]. The intention here in presenting the FOR rule is to show that Floyd Hoare logic can get very tricky. All the other axioms and rules were quite straightforward and may have given a false sense of simplicity: it is very difficult to give adequate rules for anything other than very simple ....

Reynolds, J.C., The Craft of Programming, Prentice Hall, London, 1981.


Principled Strength Reduction - Liu (1996)   (Correct)

....do not handle function abstractions, conditionals, or data types other than sets, as we do. In general, they apply only to programs written in very high level languages like SETL; our method applies also to lower level languages. Loop development by maintaining and strengthening loop invariants [14, 23, 24, 38] has been advocated by Dijkstra, Gries, and others for almost two decades as a standard strategy. As discussed in [30] its underlying principle is essentially incrementalization. But their work stresses mental tools for programming, rather than mechanical assistance, so no systematic procedures ....

J. C. Reynolds. The Craft of Programming. Prentice-Hall, Englewood Cliffs, New Jersey, 1981.


Automated Logic and Programming - Kreitz   (Correct)

....in stages. Still another possibility is to generalize some property of A(p; n) by adding an extra parameter m and performing induction on m. This technique which we will use below is called generalization in Polya s book on mathematical problem solving [Pol45] while in the context of programming [Gri81, Dij76, Rey81] it is called weakening. Quite often the formal specification of the problem already suggests a method for solving it. In our example induction is suggested because the problem can be solved trivially for sequences of length one, and it seems likely that we can decide uniformly how to solve it ....

John C. Reynolds. The craft of programming. Prentice Hall, Englewood Cliffs, NJ, Englewood Cliffs, N.J., 1981.


The Semantics and Implementation of Bindings in Higher-Order.. - Banerjee (1995)   (Correct)

.... definitions, variable declarations, encapsulation, modules, functions, procedures, and so on [123, 124, 133, 134] What is the semantics of a binding One of the earliest attempts to formalize the semantics was made by the Algol 60 committee In Algol 60, bindings are understood via the copy rule [100, 144, 116]. In symbols, this means that a definition of the form, define I = U in V 1 is understood as the syntactic substitution of U for all occurrences of the name I in V . Such a binding is termed a lazy binding, for we do not evaluate the abstract before we perform the binding. Most imperative ....

Reynolds, J. C. The Craft of Programming. Prentice-Hall, 1981.


Semantics of Pointers, Referencing and Dereferencing with.. - Hung, Zucker   (Correct)

....pointers, in terms of transformations defined using pushouts and reducts of algebra. Declarations of procedures were not, however, considered. Parameter passing was modeled by syntactic application in [De Bakker 80] The semantics, however, is then not compositional. Reynolds specification logic [Reynolds 81] did not deal with pass by reference parameters. Pursuing the direction of [Janssen Van Emde Boas 77] and [Janssen 86] Hung 89] and [Hung 90, Chapter 2] observed that there are also intensional contexts within parameter passing, and achieved a compositional semantics for a language with ....

Reynolds J.C., The Craft of Programming, Prentice-Hall, 1981.


Procedures and Invariants in the Refinement Calculus - Vickers, Morgan (1994)   (Correct)

....partial correctness semantics expressed within temporal logic, and do not allow specifications as program constructs. They touch on procedures only briefly, concentrating only on parameter passing mechanisms, avoiding the interaction of their constraints on the procedure construct. Reynolds [12] introduces general invariants which are true within their scope, and which may be temporarily falsified. But his specification logic does not give them a meaning and, like Lamport and Schneider, he uses partial correctness. 7 Conclusions The introduction of local invariants [9] gave the ....

J.C. Reynolds. The Craft of Programming. Prentice-Hall, London, 1981.


Enriched Languages - Baumann   (Correct)

....allows expressing precisely the relationship between the different statements. The semantic basis of the method is natural semantics which allows omitting restrictions on the applicability of the method in case of interference. In contrast, aliasing prevents the use of many methods [Heh93, Mor88, Rey81] Natural semantics are one of the very few formal semantics that are effectively used today to describe real world programming languages [MTH90] Our approach of extending programming languages towards wide spectrum languages makes heavy use of the ability to express all constructs of the ....

....and stores. As a consequence, a statement like x : y 1 is a correct implementation of a specification x 0 6= y 0 unless x and y interfere in the environment. Therefore, the correctness of implementations depends on the chosen environment. This is known as the interference problem [Rey81] Coming back to our approach of integrating assertions as statements into the target programming language, we can adapt the main idea of section 2 to the more complicated situation here by defining: env (P ; ae) ae 0 iff (ae ffi env ; ae 0 ffi env) j= P for assertions P . All our ....

[Article contains additional citation context not shown here]

John C. Reynolds. The Craft of Programming. Prentice-Hall, 1981.


Loop Optimization for Aggregate Array Computations - Liu, Stoller (1997)   (3 citations)  (Correct)

....CIP [8, 11, 55] In contrast to such manual or semi automatic approaches, our optimization of aggregate array computations can be automated and requires no user intervention or annotations. Our method for maintaining additional information is an automatic method for strengthening loop invariants [16, 33, 34, 61]. Our optimizations are based on the idea of explicit incremental computation, for which a general systematic transformational approach has been studied and formulated for a functional language [43, 45, 46, 47] The idea has been used in optimizing imperative programs that do not use arrays [44] ....

J. C. Reynolds. The Craft of Programming. Prentice-Hall, Englewood Cliffs, New Jersey, 1981.


Principled Strength Reduction - Liu (1997)   (Correct)

....than sets, as we do. In general, they apply only to programs written in very high level languages like SETL; our method applies also to lower level languages. Maintaining and strengthening loop invariants has been advocated by Dijkstra, Gries, and others (Dijkstra 1976, Gries 1981, Gries 1984, Reynolds 1981) for almost two decades as a standard strategy for developing loops. As discussed in a previous paper (Liu et al. 1996) its underlying principle is essentially incrementalization. But their work stresses mental tools for programming, rather than mechanical assistance, so no systematic procedures ....

Reynolds, J. C. (1981). The Craft of Programming, Prentice-Hall, Englewood Cliffs, New Jersey.


Discovering Auxiliary Information for Incremental Computation - Liu, Stoller, Teitelbaum (1996)   (12 citations)  (Correct)

....our method can be used to derive rules that maintain them. In general, such rules apply only to very high level languages like SETL; our method applies also to lower level languages like Lisp. Maintaining and strengthening loop invariants has been advocated by Dijkstra, Gries, and others [18, 25, 26, 56] for almost two decades as a standard strategy for developing loops. In order to produce efficient programs, loop invariants need to be maintained by the derived programs in an incremental fashion. To make a loop more efficient, the strategy of strengthening a loop invariant, often by introducing ....

J. C. Reynolds. The Craft of Programming. PrenticeHall, 1981.


Names and Higher-Order Functions - Stark (1995)   (29 citations)  (Correct)

No context found.

J. C. Reynolds. The Craft of Programming. Prentice Hall, 1981. (p. 125)


Axiomatic Semantics Verification of a Secure Web Server - Black (1998)   (2 citations)  (Correct)

No context found.

J. C. Reynolds. The Craft of Programming. Prentice Hall, 1981.


A First Course in Program Verification and the Semantics of.. - Gumb   (Correct)

No context found.

Reynolds, J., The Craft of Programming, Prentice-Hall, 1981.


Towards a Taxonomy of Parallel Branch and Bound Algorithms - Trienekens, de Bruin (1992)   (4 citations)  (Correct)

No context found.

J.C. Reynolds (1981). The Craft of Programming. Prentice Hall Int.

Online articles have much greater impact   More about CiteSeer.IST   Add search form to your site   Submit documents   Feedback  

CiteSeer.IST - Copyright Penn State and NEC