Results 1 
9 of
9
Automatic Synthesis of Recursive Programs: The ProofPlanning Paradigm
, 1997
"... We describe a proof plan that characterises a family of proofs corresponding to the synthesis of recursive functional programs. This plan provides a significant degree of automation in the construction of recursive programs from specifications, together with correctness proofs. This plan makes use o ..."
Abstract

Cited by 23 (2 self)
 Add to MetaCart
We describe a proof plan that characterises a family of proofs corresponding to the synthesis of recursive functional programs. This plan provides a significant degree of automation in the construction of recursive programs from specifications, together with correctness proofs. This plan makes use of metavariables to allow successive refinement of the identity of unknowns, and so allows the program and the proof to be developed hand in hand. We illustrate the plan with parts of a substantial example  the synthesis of a unification algorithm.
Invariant Discovery via Failed Proof Attempts
 In Proc. LOPSTR '98, LNCS 1559
, 1998
"... . We present a framework for automating the discovery of loop invariants based upon failed proof attempts. The discovery of suitable loop invariants represents a bottleneck for automatic verification of imperative programs. Using the proof planning framework we reconstruct standard heuristics fo ..."
Abstract

Cited by 21 (2 self)
 Add to MetaCart
. We present a framework for automating the discovery of loop invariants based upon failed proof attempts. The discovery of suitable loop invariants represents a bottleneck for automatic verification of imperative programs. Using the proof planning framework we reconstruct standard heuristics for developing invariants. We relate these heuristics to the analysis of failed proof attempts allowing us to discover invariants through a process of refinement. 1 Introduction Loop invariants are a well understood technique for specifying the behaviour of programs involving loops. The discovery of suitable invariants, however, is a major bottleneck for automatic verification of imperative programs. Early research in this area [18, 24] exploited both theorem proving techniques as well as domain specific heuristics. However, the potential for interaction between these components was not fully exploited. The proof planning framework, in which we reconstruct the standard heuristics, couples ...
Experiments in Automating Hardware Verification using Inductive Proof Planning
, 1996
"... We present a new approach to automating the verification of hardware designs based on planning techniques. A database of methods is developed that combines tactics, which construct proofs, using specifications of their behaviour. Given a verification problem, a planner uses the method database to ..."
Abstract

Cited by 14 (7 self)
 Add to MetaCart
We present a new approach to automating the verification of hardware designs based on planning techniques. A database of methods is developed that combines tactics, which construct proofs, using specifications of their behaviour. Given a verification problem, a planner uses the method database to build automatically a specialised tactic to solve the given problem. User interaction is limited to specifying circuits and their properties and, in some cases, suggesting lemmas. We have implemented our work in an extension of the Clam proof planning system. We report on this and its application to verifying a variety of combinational and synchronous sequential circuits including a parameterised multiplier design and a simple computer microprocessor.
Synthesis of programs in computational logic
 PROGRAM DEVELOPMENT IN COMPUTATIONAL LOGIC
, 2004
"... Since the early days of programming and automated reasoning, researchers have developed methods for systematically constructing programs from their specifications. Especially the last decade has seen a flurry of activities including the advent of specialized conferences, such as LOPSTR, covering the ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
(Show Context)
Since the early days of programming and automated reasoning, researchers have developed methods for systematically constructing programs from their specifications. Especially the last decade has seen a flurry of activities including the advent of specialized conferences, such as LOPSTR, covering the synthesis of programs in computational logic. In this paper we analyze and compare three stateoftheart methods for synthesizing recursive programs in computational logic. The three approaches are constructive/deductive synthesis, schemaguided synthesis, and inductive synthesis. Our comparison is carried out in a systematic way where, for each approach, we describe the key ideas and synthesize a common running example. In doing so, we explore the synergies between the approaches, which we believe are necessary in order to achieve progress over the next decade in this field.
The use of theorem provers in the teaching and practice of formal methods
 In Proceedings of the Irish Workshop on Formal Methods
, 1997
"... ©Copyright in this paper belongs to the author(s) Published in collaboration with the ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
(Show Context)
©Copyright in this paper belongs to the author(s) Published in collaboration with the
An experimental comparison of rippling and exhaustive rewriting
, 1996
"... We compare rippling and exhaustive rewriting using recursive path ordering, on a range of inductive proofs. We present statistics on success rates, branching rates and CPU times. We use these statistics to argue that rippling succeeds more often. However, these statistics also show that rippling and ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
We compare rippling and exhaustive rewriting using recursive path ordering, on a range of inductive proofs. We present statistics on success rates, branching rates and CPU times. We use these statistics to argue that rippling succeeds more often. However, these statistics also show that rippling and reduction are roughly the same in terms of average branching rate and that rippling often takes longer in terms of CPU time.
The Use of Proof Plans for Transformation of Functional Programs by Changes of Data Type
, 1996
"... Program transformation concerns the derivation of an efficient program by applying correctnesspreserving manipulations to a source program. Transformation is a lengthy process, and it is important to keep user interaction to a manageable level by automating the transformation steps. In this thesis ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Program transformation concerns the derivation of an efficient program by applying correctnesspreserving manipulations to a source program. Transformation is a lengthy process, and it is important to keep user interaction to a manageable level by automating the transformation steps. In this thesis I present an automated technique for transforming a program by changing the data types in that program to ones which are more appropriate for the task. Programs are constructed by proving synthesis theorems in the proofsasprograms paradigm. Programs are transformed by modifying their synthesis theorems and relating the modified theorem to the original. Proof transformation allows more powerful transformations than program transformation because the proof of the modified theorem yields a program which meets the original specification, but may compute a different function to the original program. Synthesis proofs contain information which is not present in the corresponding program and can ...
Lessons From Experience: Making Theorem Provers More Cooperative
 DEPARTMENT OF COMPUTER SCIENCE, UNIVERSITY OF YORK
, 1996
"... We describe our experiences in trying to build a cooperative theorem proving system. Our model of cooperation is that of a user and an automaton combining forces to prove theorems in a semiautomated theorem proving system. We describe various undesirable behaviours of interactive and automated sy ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
We describe our experiences in trying to build a cooperative theorem proving system. Our model of cooperation is that of a user and an automaton combining forces to prove theorems in a semiautomated theorem proving system. We describe various undesirable behaviours of interactive and automated systems and set out our initial objectives. We evaluate our early attempts and, in the light of this experience, draw up a tentative wishlist for future systems.
Logical Framework Based Program Development
, 1998
"... in the base theory. The use of a logical framework as opposed to, say, a theorem prover for firstorder logic, is important here, as this step requires formalizing and reasoning about rules as opposed to formulae. The rules formalized are designed to be adequate to simulate derivations of the targ ..."
Abstract
 Add to MetaCart
(Show Context)
in the base theory. The use of a logical framework as opposed to, say, a theorem prover for firstorder logic, is important here, as this step requires formalizing and reasoning about rules as opposed to formulae. The rules formalized are designed to be adequate to simulate derivations of the target calculus. (3) We write tactics (programs that construct proofs) that help automate the application of proof rules. For example, by adopting ideas from [Bundy et al. 1991; Basin and Walsh 1996], in [Kraan et al. 1996] we completely automated the synthesis of many (albeit relatively simple) logic programs. This methodology is based on, and arose from, case studies including: unfold/fold style development for functional and logic programs; Deductive Tableaux style development of sorting programs [Ayari and Basin 1996]; synthesis of logic programs [Kraan et al. 1996]; transformation of logic programs using transformation template libraries [Ande