Results 1  10
of
18
Equations and rewrite rules: a survey
 In Formal Language Theory: Perspectives and Open Problems
, 1980
"... bY ..."
The origins of structural operational semantics
 Journal of Logic and Algebraic Programming
, 2004
"... We review the origins of structural operational semantics. The main publication ‘A Structural Approach to Operational Semantics, ’ also known as the ‘Aarhus Notes, ’ appeared in 1981 [G.D. Plotkin, A structural approach to operational semantics, DAIMI FN19, Computer Science Department, Aarhus Unive ..."
Abstract

Cited by 64 (0 self)
 Add to MetaCart
We review the origins of structural operational semantics. The main publication ‘A Structural Approach to Operational Semantics, ’ also known as the ‘Aarhus Notes, ’ appeared in 1981 [G.D. Plotkin, A structural approach to operational semantics, DAIMI FN19, Computer Science Department, Aarhus University, 1981]. The development of the ideas dates back to the early 1970s, involving many people and building on previous work on programming languages and logic. The former included abstract syntax, the SECD machine, and the abstract interpreting machines of the Vienna school; the latter included the λcalculus and formal systems. The initial development of structural operational semantics was for simple functional languages, more or less variations of the λcalculus; after that the ideas were gradually extended to include languages with parallel features, such as Milner’s CCS. This experience set the ground for a more systematic exposition, the subject of an invited course of lectures at Aarhus University; some of these appeared in print as the 1981 Notes. We discuss the content of these lectures and some related considerations such as ‘small state’ versus ‘grand state, ’ structural versus compositional semantics, the influence of the Scott–Strachey approach to denotational semantics, the treatment of recursion and jumps, and static semantics. We next discuss relations with other work and some immediate further development. We conclude with an account of an old, previously unpublished, idea: an alternative, perhaps more readable, graphical presentation of systems of rules for operational semantics.
Contracts as pairs of projections
, 2006
"... Abstract. Assertionbased contracts provide a powerful mechanism for stating invariants at module boundaries and for enforcing them uniformly. In 2002, Findler and Felleisen showed how to add contracts to higherorder functional languages, allowing programmers to assert invariants about functions as ..."
Abstract

Cited by 27 (4 self)
 Add to MetaCart
Abstract. Assertionbased contracts provide a powerful mechanism for stating invariants at module boundaries and for enforcing them uniformly. In 2002, Findler and Felleisen showed how to add contracts to higherorder functional languages, allowing programmers to assert invariants about functions as values. Following up in 2004, Blume and McAllester provided a quotient model for contracts. Roughly speaking, their model equates a contract with the set of values that cannot violate the contract. Their studies raised interesting questions about the nature of contracts and, in particular, the nature of the any contract. In this paper, we develop a model for software contracts that follows Dana Scott’s program by interpreting contracts as projections. The model has already improved our implementation of contracts. We also demonstrate how it increases our understanding of contractoriented programming and design. In particular, our work provides a definitive answer to the questions raised by Blume and McAllester’s work. The key insight from our model that resolves those questions is that a contract that puts no obligation on either party is not the same as the most permissive contract for just one of the parties.
Towards the Generation of Efficient Code from Verified Programs
, 1984
"... An investigation was made of the characteristics of computer programming languages intended for the implementation of provably correct programs and of the characteristics of programs written in these languages. It was discovered that potential run time exceptions and the necessity of providing a rig ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
An investigation was made of the characteristics of computer programming languages intended for the implementation of provably correct programs and of the characteristics of programs written in these languages. It was discovered that potential run time exceptions and the necessity of providing a rigorously correct implementation of exception handlers so dominate the potential control paths of programs written in verifiable languages that the usual code optimization techniques are ineffective. It was further discovered that the call intensive control structures of these programs, necessitated by verification constraints, also thwart optimization and lead to inefficient code. It is shown that theorems can be derived at potential exception sites which, if true, guarantee that the exception condition will never arise permitting removal of the exception path from the program’s flow graph. These theorems are proved using the automatic theorem prover which is part of the program verification system. Is is also shown that many of the routine calls contained in verifiable programs may be reduced in expense by converting parameters to global variables or eliminated completely by expanding the called routines at their call sites. Both the exception suppression and call reduction techniques reduce the complexity of the program’s call graph and facilitate conventional optimizations. Several examples are presented and the potential improvements in code size resulting from the application of these techniques are discussed.
Practical Program Verification by Forward Symbolic Execution: Correctness and Examples
 AustrianJapan Workshop on Symbolic Computation in Software Science
, 2008
"... Abstract. We present the theoretical aspects and a prototype implementation in the Theorema system of a method for the verification of recursive imperative programs. The method is based on forward symbolic execution and functional semantics and generates first order verification conditions for the t ..."
Abstract

Cited by 5 (4 self)
 Add to MetaCart
Abstract. We present the theoretical aspects and a prototype implementation in the Theorema system of a method for the verification of recursive imperative programs. The method is based on forward symbolic execution and functional semantics and generates first order verification conditions for the total correctness which use only the underlying theory of the program. All verification conditions are generated automatically by our prototype implementation in the frame of the Theorema system based on Mathematica. The termination property is expressed as an induction principle depending on the structure of the program with respect to recursion. It turns out that part of the verification conditions (notably the termination condition) are crucial for the existence of the function defined by the program, without which the total correctness formula is trivial due to inconsistency of the assumptions. The formal description of the method is the basis for the implementation and also for the proof of its correctness. 1
A Calculus for Imperative Programs: Formalization and Implementation
"... Abstract—As an extension of our previous work on imperative program verification, we present a formalism for handling the total correctness of While loops in imperative programs, consisting in functional based definitions of the verification conditions for both partial correctness and for terminatio ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
Abstract—As an extension of our previous work on imperative program verification, we present a formalism for handling the total correctness of While loops in imperative programs, consisting in functional based definitions of the verification conditions for both partial correctness and for termination. A specific feature of our approach is the generation of verification conditions as first order formulae, including the termination condition which is expressed as an induction principle. Keywordsprogram analysis and verification, symbolic execution, theorem proving I.
A Purely Logical Approach to Imperative Program Verification
, 2010
"... We present a method for the generation of the verification conditions for the total correctness of imperative programs containing nested loops with abrupt termination statements, and we illustrate it on several examples. The conditions are (firstorder) formulae obtained by certain transformations o ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
We present a method for the generation of the verification conditions for the total correctness of imperative programs containing nested loops with abrupt termination statements, and we illustrate it on several examples. The conditions are (firstorder) formulae obtained by certain transformations of the program text. The loops are treated similarly to calls of recursively defined functions. The program text is analyzed on all branches by forward symbolic execution using certain metalevel functions which define the syntax, the semantics, the verification conditions for the partial correctness, and the termination conditions. The termination conditions are expressed as induction principles, however still in firstorder logic. Our approach is simpler than others because we use neither an additional model for program execution, nor a fixpoint theory for the definition of program semantics. Because the metalevel functions are fully formalized in predicate logic, it is possible to prove in a purely logical way and at object level that the verification conditions are necessary and sufficient for the existence and uniqueness of the function implemented by the program. 1
TerraHS: Integration of Functional Programming and Spatial Databases for GIS Application Development
, 2006
"... Recently, researchers in GIScience argued about the benefits on using functional programming for geospatial application development and prototyping of novel ideas. This paper presents an application that interfaces a functional language with a spatial database. It enables developing GIS application ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
Recently, researchers in GIScience argued about the benefits on using functional programming for geospatial application development and prototyping of novel ideas. This paper presents an application that interfaces a functional language with a spatial database. It enables developing GIS applications development in a functional language, while handling data are in a spatial database. We used this application develop a Map Algebra, that shows the benefits on using this paradigm in GIScience. Our work shows there are many gains in using a functional language, especially Haskell, to write concise and expressive GIS applications. The TerraHS application allows a good compromise between the expressive power of a functional language, and the data handling facilities of an imperative language.
LOWER BOUNDS FOR COPRIMENESS AND OTHER DECISION PROBLEMS IN ARITHMETIC
"... This talk was about some joint work with Lou van den Dries, in which we try to derive lower bounds for the worstcase, time complexity of functions and decision problems in arithmetic which apply to all—or, in any case, to as many as possible— algorithms. The relevant papers are listed in the biblio ..."
Abstract
 Add to MetaCart
This talk was about some joint work with Lou van den Dries, in which we try to derive lower bounds for the worstcase, time complexity of functions and decision problems in arithmetic which apply to all—or, in any case, to as many as possible— algorithms. The relevant papers are listed in the bibliography and [3] gives a brief account of how we came to these questions, as well as a fairly complete exposition of what we have proved. Here I will confine myself to very few precise statements of specific results, since my main aim is to describe the methods that we use. 1 1. One conjecture and two results The ancient Euclidean algorithm computes the greatest common divisor of two natural numbers using iterated division. It can be expressed succinctly by the recursive equation (1) gcd(a, b) = if (rem(a, b) = 0) then b else gcd(b, rem(a, b)) (a ≥ b ≥ 1), and its natural complexity measure is cε(a, b) = the number of divisions required to compute gcd(m, n) using (1). It is easy to check that