Results 1  10
of
42
Equations and rewrite rules: a survey
 In Formal Language Theory: Perspectives and Open Problems
, 1980
"... bY ..."
(Show Context)
Rules and Strategies for Transforming Functional and Logic Programs
 ACM Computing Surveys
, 1996
"... We present an overview of the program transformation methodology, focusing our attention on the socalled `rules + strategies' approach in the case of functional and logic programs. The paper is intended to offer an introduction to the subject. The various techniques we present are illustrated ..."
Abstract

Cited by 85 (5 self)
 Add to MetaCart
We present an overview of the program transformation methodology, focusing our attention on the socalled `rules + strategies' approach in the case of functional and logic programs. The paper is intended to offer an introduction to the subject. The various techniques we present are illustrated via simple examples. A preliminary version of this report has been published in: Moller, B., Partsch, H., and Schuman, S. (eds.): Formal Program Development. Lecture Notes in Computer Science 755, Springer Verlag (1993) 263304. Also published in: ACM Computing Surveys, Vol 28, No. 2, June 1996. 3 1 Introduction The program transformation approach to the development of programs has first been advocated by [BurstallDarlington 77], although the basic ideas were already presented in previous papers by the same authors [Darlington 72, BurstallDarlington 75]. In that approach the task of writing a correct and efficient program is realized in two phases: the first phase consists in writing an in...
Hope: An Experimental Applicative Language
, 1980
"... An applicative language called HOPE is described and discussed. The underlying goal of the design and implementation effort was to produce a very simple programming language which encourages the construction of clear and manipulable programs. HOPE does not include an assignment statement; this is fe ..."
Abstract

Cited by 41 (4 self)
 Add to MetaCart
An applicative language called HOPE is described and discussed. The underlying goal of the design and implementation effort was to produce a very simple programming language which encourages the construction of clear and manipulable programs. HOPE does not include an assignment statement; this is felt to be an important simplification. The user may freely define his own data types, without the need to devise a complicated encoding in terms of lowlevel types. The language is very strongly typed, and as implemented it incorporates a typechecker which handles polymorphic types and overloaded operators. Functions are defined by a set of recursion equations; the lefthand side of each equation includes a pattern used to determine which equation to use for a given argument. The availability of arbitrary higherorder types allows functions to be defined which 'package' recursion. Lazilyevaluated lists are provided, allowing the use of infinite lists which could be used to provide interactive input/output and concurrency.
A mechanically verified code generator
 Journal of Automated Reasoning
, 1989
"... in this document are those of the author and should not be interpreted as representing the official policies, either expressed or implied, of Computational ..."
Abstract

Cited by 33 (1 self)
 Add to MetaCart
(Show Context)
in this document are those of the author and should not be interpreted as representing the official policies, either expressed or implied, of Computational
Automated Theorem Proving by Test Set Induction
 JOURNAL OF SYMBOLIC COMPUTATION
, 1997
"... Test set induction is a goaldirected proof technique which combines the full power of explicit induction and proof by consistency. It works by computing an appropriate explicit induction scheme called a test set, to trigger the induction proof, and then applies a refutation principle using proof by ..."
Abstract

Cited by 30 (10 self)
 Add to MetaCart
Test set induction is a goaldirected proof technique which combines the full power of explicit induction and proof by consistency. It works by computing an appropriate explicit induction scheme called a test set, to trigger the induction proof, and then applies a refutation principle using proof by consistency techniques. We present a general scheme for test set induction together with a simple soundness proof. Our method is based on new notions of test sets, induction variables, and provable inconsistency, which allow us to refute false conjectures even in the case where the functions are not completely deøned. We show how test sets can be computed when the constructors are not free, and give an algorithm for computing induction variables. Finally, we present a procedure for proof by test set induction which is refutationally complete for a larger class of specifications than has been shown in previous work. The method has been implemented in the prover SPIKE. Based on computer ex...
Automated Mathematical Induction
, 1992
"... Proofs by induction are important in many computer science and artiøcial intelligence applications, in particular, in program veriøcation and speciøcation systems. We present a new method to prove (and disprove) automatically inductive properties. Given a set of axioms, a wellsuited induction schem ..."
Abstract

Cited by 27 (6 self)
 Add to MetaCart
(Show Context)
Proofs by induction are important in many computer science and artiøcial intelligence applications, in particular, in program veriøcation and speciøcation systems. We present a new method to prove (and disprove) automatically inductive properties. Given a set of axioms, a wellsuited induction scheme is constructed automatically. We call such an induction scheme a test set. Then, for proving a property, we just instantiate it with terms from the test set and apply pure algebraic simpliøcation to the result. This method needs no completion and explicit induction. However it retains their positive features, namely, the completeness of the former and the robustness of the latter. It has been implemented in the theoremprover SPIKE 1 . 1 Introduction 1.1 Motivation Inductive reasoning is simply a method of performing inferences in domains where there exists a wellfounded relation on the objects. It is fundamental when proving properties of numbers, datastructures, or programs axiomat...
Colouring Terms to Control Equational Reasoning
 Journal of Automated Reasoning
, 1997
"... . In this paper we present an approach to prove the equality between terms in a goaldirected way developed in the field of inductive theorem proving. The two terms to be equated are syntactically split into expressions which are common to both and those which occur only in one term. According to the ..."
Abstract

Cited by 26 (13 self)
 Add to MetaCart
(Show Context)
. In this paper we present an approach to prove the equality between terms in a goaldirected way developed in the field of inductive theorem proving. The two terms to be equated are syntactically split into expressions which are common to both and those which occur only in one term. According to the computed differences we apply appropriate equations to the terms in order to reduce the differences in a goaldirected way. Although this approach was developed for purposes of inductive theorem proving  we use this technique to manipulate the conclusion of an induction step to enable the use of the hypothesis  it is a powerful method for the control of equational reasoning in general. 1. Introduction The automation of equational reasoning is one of the most important obstacles in the field of automating deductions. Even small equational problems result in a huge search space, and finding a proof often fails due to the combinatorial explosion. Proving (conditional) equations by inductio...
A Verified Implementation of an Applicative Language with Dynamic Storage Allocation
, 1993
"... A compiler for a subset of the Nqthm logic and a mechanically checked proof of its correctness is described. The Nqthm logic defines an applicative programming language very similar to McCarthy's pure Lisp[20]. The compiler compiles programs in the Nqthm logic into the Piton assembly level lang ..."
Abstract

Cited by 20 (0 self)
 Add to MetaCart
A compiler for a subset of the Nqthm logic and a mechanically checked proof of its correctness is described. The Nqthm logic defines an applicative programming language very similar to McCarthy's pure Lisp[20]. The compiler compiles programs in the Nqthm logic into the Piton assembly level language [23]. The correctness of the compiler is proven by showing that the result of executing the Piton code is the same as produced by the Nqthm interpreter V&C$. The Nqthm logic defines several different abstract data types, or shells, as they are called in Nqthm. The user can also define additional shells. The definition of a shell includes the definition of a constructor function that returns new objects with the type of that shell. These objects can become garbage, so the runtime system of the compiler includes a garbage collector. The proof of the correctness of the compiler has not been entirely mechanically checked. A plan for completing the proof is described.