Results 11  20
of
27
The Early Search for Tractable Ways of Reasoning About Programs
 IEEE Annals of the History of Computing
, 2003
"... This paper traces the important steps in the history up to around 1990 of research on reasoning about programs. The main focus is on sequential imperative programs but some comments are made on concurrency. Initially, researchers focussed on ways of verifying that a program satisfies its specifi ..."
Abstract

Cited by 15 (2 self)
 Add to MetaCart
This paper traces the important steps in the history up to around 1990 of research on reasoning about programs. The main focus is on sequential imperative programs but some comments are made on concurrency. Initially, researchers focussed on ways of verifying that a program satisfies its specification (or that two programs were equivalent). Over time it became clear that post facto verification is only practical for small programs and attention turned to verification methods which support the development of programs; for larger programs it is necessary to exploit a notation of compositionality. Coping with concurrent algorithms is much more challenging  this and other extensions are considered briefly. The main thesis of this paper is that the idea of reasoning about programs has been around since they were first written; the search has been to find tractable methods.
Structured theory presentations and logic representations
 ANNALS OF PURE AND APPLIED LOGIC
, 1994
"... The purpose of a logical framework such as LF is to provide a language for defining logical systems suitable for use in a logicindependent proof development environment. All inferential activity in an object logic (in particular, proof search) is to be conducted in the logical framework via the ..."
Abstract

Cited by 14 (2 self)
 Add to MetaCart
The purpose of a logical framework such as LF is to provide a language for defining logical systems suitable for use in a logicindependent proof development environment. All inferential activity in an object logic (in particular, proof search) is to be conducted in the logical framework via the representation of that logic in the framework. An important tool for controlling search in an object logic, the need for which is motivated by the difficulty of reasoning about large and complex systems, is the use of structured theory presentations. In this paper a rudimentary language of structured theory presentations is presented, and the use of this structure in proof search for an arbitrary object logic is explored. The behaviour of structured theory presentations under representation in a logical framework is studied, focusing on the problem of "lifting" presentations from the object logic to the metalogic of the framework. The topic of imposing structure on logic presentations...
A Formal Description of Verdi
, 1990
"... This paper will be most easily appreciated by the reader with some prior knowledge of Mathematical Logic [8, 19], Set Theory [11], and Denotational Semantics [9, 18, 20]. Verdi differs from its predecessor mVerdi [4] in several significant ways: ..."
Abstract

Cited by 10 (5 self)
 Add to MetaCart
This paper will be most easily appreciated by the reader with some prior knowledge of Mathematical Logic [8, 19], Set Theory [11], and Denotational Semantics [9, 18, 20]. Verdi differs from its predecessor mVerdi [4] in several significant ways:
Higher Order Functions Considered Unnecessary for Higher Order Programming
 SRI International, 333 Ravenswood Ave., Menlo Park CA 94025
, 1990
"... It is often claimed that the essence of functional programming is the use of functions as values, i.e., of higher order functions, and many interesting examples have been given showing the power of this approach. Unfortunately, the logic of higher order functions is difficult, and in particular, hig ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
It is often claimed that the essence of functional programming is the use of functions as values, i.e., of higher order functions, and many interesting examples have been given showing the power of this approach. Unfortunately, the logic of higher order functions is difficult, and in particular, higher order unification is undecidable. Moreover (and closely related), higher order expressions are notoriously difficult for humans to read and write correctly. However, this paper shows that typical higher order programming examples can be captured with just first order functions, by the systematic use of parameterized modules, in a style that we call parameterized programming. This has the advantages that correctness proofs can be done entirely within first order logic, and that interpreters and compilers can be simpler and more efficient. Moreover, it is natural to impose semantic requirements on modules, and hence on functions. A more subtle point is that higher order logic does not alwa...
A Survey of Formal Software Development Methods
 SOFTWARE ENGINEERING
, 1988
"... This paper is a survey of the current state of the art of research on methods for formal software development. The scope of this paper is necessarily restricted so as to avoid discussion of a great many approaches at a very superficial level. First, although some of the ideas discussed below could b ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
This paper is a survey of the current state of the art of research on methods for formal software development. The scope of this paper is necessarily restricted so as to avoid discussion of a great many approaches at a very superficial level. First, although some of the ideas discussed below could be (and have been) applied to hardware development as well as to software development, this topic will not be treated here. Second, the special problems involved in the development of concurrent systems will not be discussed here although again many of the approaches mentioned below could be applied in this context. Third, no attempt is made to treat programming methodologies such as Jackson's method and program development systems such as the MIT Programmer's Apprentice which are not formally based. Finally, this survey does not claim to be fully exhaustive although an attempt has been made to cover most of the main approaches. Many of the technical details of the different approaches discussed have been glossed over or simplified for the purposes of this presentation; full details may be found in the cited references.
A new semantics for Clear
"... Summary. A semantics for the Clear specification language is given. The language of set theory is employed to present constructions corresponding to Clear's specificationcombining operations, which are then used as the basis for a denotational semantics. This is in contrast to Burstall and Goguen's ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
Summary. A semantics for the Clear specification language is given. The language of set theory is employed to present constructions corresponding to Clear's specificationcombining operations, which are then used as the basis for a denotational semantics. This is in contrast to Burstall and Goguen's 1980 semantics which described the meanings of these operations
Behavioral Verification of Distributed Concurrent Systems with BOBJ
 Proceedings, Conference on Quality Software
, 2003
"... Following condensed introductions to classical and behavioral algebraic specification, this paper discusses the verification of behavioral properties using BOBJ, especially its implementation of conditional circular coinductive rewriting with case analysis. This formal method is then applied to prov ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
Following condensed introductions to classical and behavioral algebraic specification, this paper discusses the verification of behavioral properties using BOBJ, especially its implementation of conditional circular coinductive rewriting with case analysis. This formal method is then applied to proving correctness of the alternating bit protocol, in one of its less trivial versions. We have tried to minimize mathematics in the exposition, in part by giving concrete illustrations using the BOBJ system.
A Formalism Combining CCS and CASL
, 2001
"... Grammar 33 A.1 Basic Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 A.2 Basic Specifications with Subsorts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 A.3 Structured Specifications . . . . . . . . . . . . . . . . . . ..."
Abstract

Cited by 6 (2 self)
 Add to MetaCart
Grammar 33 A.1 Basic Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 A.2 Basic Specifications with Subsorts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 A.3 Structured Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 A.4 Architectural Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 A.5 Specification Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 B Specification of the Case Study 37 1
Tossing Algebraic Flowers down the Great Divide
 In People and Ideas in Theoretical Computer Science
, 1999
"... Data Types and Algebraic Semantics The history of programming languages, and to a large extent of software engineering as a whole, can be seen as a succession of ever more powerful abstraction mechanisms. The first stored program computers were programmed in binary, which soon gave way to assembly l ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
Data Types and Algebraic Semantics The history of programming languages, and to a large extent of software engineering as a whole, can be seen as a succession of ever more powerful abstraction mechanisms. The first stored program computers were programmed in binary, which soon gave way to assembly languages that allowed symbolic codes for operations and addresses. fortran began the spread of "high level" programming languages, though at the time it was strongly opposed by many assembly programmers; important features that developed later include blocks, recursive procedures, flexible types, classes, inheritance, modules, and genericity. Without going into the philosophical problems raised by abstraction (which in view of the discussion of realism in Section 4 may be considerable), it seems clear that the mathematics used to describe programming concepts should in general get more abstract as the programming concepts get more abstract. Nevertheless, there has been great resistance to u...
A TypeTheoretic Analysis of Modular Specifications
, 1996
"... We study the problem of representing a modular specification language in a typetheory based theorem prover. Our goals are: to provide mechanical support for reasoning about specifications and about the specification language itself; to clarify the semantics of the specification language by formalis ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
We study the problem of representing a modular specification language in a typetheory based theorem prover. Our goals are: to provide mechanical support for reasoning about specifications and about the specification language itself; to clarify the semantics of the specification language by formalising them fully; to augment the specification language with a programming language in a setting where they are both part of the same formal environment, allowing us to define a formal implementation relationship between the two. Previous work on similar issues has given rise to a dichotomy between “shallow ” and “deep ” embedding styles when representing one language within another. We show that the expressiveness of type theory, and the high degree of reflection that it permits, allow us to develop embedding techniques which lie between the “shallow ” and “deep ” extremes. We consider various possible embedding strategies and then choose one of them to explore more fully. As our object of study we choose a fragment of the Z specification language, which we encode in the type theory UTT, as implemented in the LEGO proofchecker. We use the encoding to study some of the operations on schemas provided by Z. One of our main concerns is whether it is possible to reason about Z specifications at the level of these operations. We prove some theorems about Z showing that, within certain constraints, this kind of reasoning is indeed possible. We then show how these metatheorems can be used to carry out formal reasoning about Z specifications. For this we make use of an example taken from the Z Reference Manual (ZRM). Finally, we exploit the fact that type theory provides a programming language as well as a logic to define a notion of implementation for Z specifications. We illustrate this by encoding some example programs taken from the ZRM. ii Declaration I declare that this thesis was composed by myself, and that the work contained in it is my own except where otherwise stated. Some of this work has been published previously [Mah94]. iii