Results 1  10
of
12
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 21 (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.
A Calculus of Transformation

, 1994
"... This paper presents the concepts and the semantics of a transformationcalculus TC that is generic wrt. concrete object languages. Built upon an object language description given by theory in higherorder logics (see [Andr 86]), TC provides contextsensitive rules in which requirements on the conte ..."
Abstract

Cited by 13 (7 self)
 Add to MetaCart
This paper presents the concepts and the semantics of a transformationcalculus TC that is generic wrt. concrete object languages. Built upon an object language description given by theory in higherorder logics (see [Andr 86]), TC provides contextsensitive rules in which requirements on the context of a redex can be imposed, and integrates a restricted form of extended rewriting. Furthermore, rules may be higherorder in order to represent tactical combinators and to model "parametric transformations". This work can be seen as a specification of transformation systems and a foundation for correctnessproofs of transformations.
Program Development Schemata as Derived Rules
, 2000
"... This paper makes several contributions towards a clarified view of schemabased program development. First, we propose that schemata can be understood, formalized, and used in a simple way: program development schemata are derived rules. We mean this in the standard sense of a derived rule of infere ..."
Abstract

Cited by 9 (2 self)
 Add to MetaCart
This paper makes several contributions towards a clarified view of schemabased program development. First, we propose that schemata can be understood, formalized, and used in a simple way: program development schemata are derived rules. We mean this in the standard sense of a derived rule of inference in logic. A schema like Figure i can be formulated as a rule stating that the conclusion follows from the premises defining F, G, and the applicability conditions. By deriving the rule in an axiomatic theory, we validate a semantic statement about it: the conclusion of the rule holds in every model where both the axioms of the theory and the premises of the rule are true. Hence, by selecting a language to work in we control which development schemata are formalizable, and by selecting a theory we determine which schemata are derivable
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 8 (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.
Generic System Support for Deductive Program Development
 In Tools and Algorithms for the Construction and Analysis of Systems (TACAS96), volume 1055 of LNCS
"... We report on a case study in using logical frameworks to support the formalization of programming calculi and their application to deductionbased program synthesis. Within a conservative extension of higherorder logic implemented in the Isabelle system, we derived rules for program development tha ..."
Abstract

Cited by 8 (5 self)
 Add to MetaCart
(Show Context)
We report on a case study in using logical frameworks to support the formalization of programming calculi and their application to deductionbased program synthesis. Within a conservative extension of higherorder logic implemented in the Isabelle system, we derived rules for program development that can simulate those of the deductive tableau proposed by Manna and Waldinger. We have used the resulting theory to synthesize a library of verified programs, focusing on sorting algorithms. Our experience suggests that the methodology we propose is well suited both to implement and use programming calculi, extend them, partially automate them, and even formally reason about their correctness. 1 Introduction Over the last few decades, a variety of methodologies for deductive software synthesis, transformation, and refinement from specification have been suggested, e.g., [4, 5, 8, 9, 12]. Our research investigates general frameworks that support such program development formalisms. That is, ...
Modeling a Hardware Synthesis Methodology in Isabelle
 In Theorem Proving in Higher Order Logics (TPHOLs'96), volume 1125 of LNCS
, 1996
"... . Formal Synthesis is a methodology developed at Kent for combining circuit design and verification, where a circuit is constructed from a proof that it meets a given formal specification. We have reinterpreted this methodology in Isabelle's theory of higherorder logic so that circuits are inc ..."
Abstract

Cited by 6 (4 self)
 Add to MetaCart
(Show Context)
. Formal Synthesis is a methodology developed at Kent for combining circuit design and verification, where a circuit is constructed from a proof that it meets a given formal specification. We have reinterpreted this methodology in Isabelle's theory of higherorder logic so that circuits are incrementally built during proofs using higherorder resolution. Our interpretation simplifies and extends Formal Synthesis both conceptually and in implementation. It also supports integration of this development style with other proofbased synthesis methodologies and leads to techniques for developing new classes of circuits, e.g., recursive descriptions of parametric designs. Keywords: Hardware verification and synthesis, theorem proving, higherorder logic, higherorder unification. 1. Introduction Verification by formal proof is time intensive and this is a burden in bringing formal methods into software and hardware design. One approach to reducing the verification burden is to combine develop...
Adding Metatheoretic Facilities to FirstOrder Theories
, 1995
"... Generic proof systems like Isabelle provide some limited but useful metatheoretic facilities for declared logics; in particular, users can prove simple derived rules and also `solve' formulae that contain metavariables  a technique useful for, e.g., program synthesis. We show how an arbi ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
Generic proof systems like Isabelle provide some limited but useful metatheoretic facilities for declared logics; in particular, users can prove simple derived rules and also `solve' formulae that contain metavariables  a technique useful for, e.g., program synthesis. We show how an arbitrary first order theory can be conservatively extended to provide similar facilities, without a supporting metatheory, and examine what the limitations of this approach are. Keywords: computer assisted proof, logical frameworks, metatheoretic extensibility, secondorder logic, proof theory. 1 Introduction Using a generic proof development system like Isabelle [12] to prove theorems of a logic is sometimes easier than using a custombuilt prover. This is because the generic system contains a metalogic in which object logics are encoded and this may allow extra methods of proof construction. In this paper we look at two examples of this. First, in the metalogic, users can derive new rules or...
Formalization of the Development Process
, 1998
"... Introduction 14.1.1 What is development? Software development encompasses many phases including requirements engineering, specification, design, implementation, verification or testing, and maintenance. In this chapter we concentrate on the intermediate tasks: the transition from requirements spec ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
Introduction 14.1.1 What is development? Software development encompasses many phases including requirements engineering, specification, design, implementation, verification or testing, and maintenance. In this chapter we concentrate on the intermediate tasks: the transition from requirements specification to verified design and design optimization; in particular techniques for developing correct designs as opposed to ad hoc or a posteriori methods in which a postulated design is later verified or tested. We view software development as the composition of correctness preserving refinement steps. Hence, a development is meaningful relative to a notion of refinement and correctness. There are many such notions (e.g., Chapter 6), each defining a type of problem transformation or reduction. For example specification refinement from a specification SP to SP 0 through a refinement map ae might be defined as co
Implementing F S0 in Isabelle: adding structure at the metalevel
 University of Cambridge Computer Laboratory
, 1995
"... Abstract Often the theoretical virtue of simplicity in a theory does not fit with the practical necessities of working with it. We present as a case study an implementation in a generic theorem prover (Isabelle) of a theory (F S0) which at first sight seems to lake all the facilties needed to be pra ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
Abstract Often the theoretical virtue of simplicity in a theory does not fit with the practical necessities of working with it. We present as a case study an implementation in a generic theorem prover (Isabelle) of a theory (F S0) which at first sight seems to lake all the facilties needed to be practically usable. However, we show that we can use the facilties available in Isabelle to provide all the structuring facilities (modules, abstraction, etc.) that are needed without compromising the simplicity of the original theory in any way, resulting in a thouroghly practical implementation. We further argue that it would be difficult to build a custom implemenation as effective. A great many logics have been proposed as tools in computer science, especially for all sorts of formal, machine checked reasoning. However, if we try to implement these theories in some practical manner, we find that what has been proposed by theoreticians as a practical tool has to be augmented in all sorts
Automating the Synthesis of Functional Programs
, 1995
"... The task of constructing programs can be treated as a task of finding proofs in an appropriate logic. For recursive programs, the corresponding logic includes appropriate induction principles. We describe a system that automates program synthesis via theorem proving in this way, building on contr ..."
Abstract
 Add to MetaCart
The task of constructing programs can be treated as a task of finding proofs in an appropriate logic. For recursive programs, the corresponding logic includes appropriate induction principles. We describe a system that automates program synthesis via theorem proving in this way, building on control strategies developed for verification proofs using proof plans. This involves some extensions to the planning system. The resultant system automates an approach to programming where program development and correctness proof proceed hand in hand, as advocated by Gries. 1 Introduction Our interest is in the automation of program synthesis. We work in constructive type theory, as implemented in the Oyster system [Bundy et al., 1990], a constructive type theory, derived from Constable's Nuprl [Constable et al., 1986]. In this setting program synthesis is achieved by proving a specification statement of the form 8input 9output spec(input; output) where input is a vector of arguments (...