Results 11  20
of
82
Discovering auxiliary information for incremental computation
 In Symp. on Princ. of Prog. Lang
, 1996
"... This paper presents program analyses and transformations that discover a general class of auxiliary information for any incremental computation problem. Combining these techniques with previous techniques for caching intermediate results, we obtain a systematic approach that transforms nonincrementa ..."
Abstract

Cited by 22 (12 self)
 Add to MetaCart
This paper presents program analyses and transformations that discover a general class of auxiliary information for any incremental computation problem. Combining these techniques with previous techniques for caching intermediate results, we obtain a systematic approach that transforms nonincremental programs into e cient incremental programs that use and maintain useful auxiliary information as well as useful intermediate results. The use of auxiliary information allows us to achieve a greater degree of incrementality than otherwise possible. Applications of the approach i nclude strength reduction in optimizing compilers and nite di erencing in transformational programming. 1
Synthesizing proofs from programs in the Calculus of Inductive Constructions
 In Proceedings of the International Conference on Mathematics for Programs Constructions. SpringerVerlag LNCS 947
, 1995
"... . We want to prove "automatically" that a program is correct with respect to a set of given properties that is a specification. Proofs of specifications contain logical parts and computational parts. Programs can be seen as computational parts of proofs. They can then be extracted from pro ..."
Abstract

Cited by 21 (1 self)
 Add to MetaCart
. We want to prove "automatically" that a program is correct with respect to a set of given properties that is a specification. Proofs of specifications contain logical parts and computational parts. Programs can be seen as computational parts of proofs. They can then be extracted from proofs and be certified to be correct. We focus on the inverse problem : is it possible to reconstruct proof obligations from a program and its specification ? The framework is the type theory where a proof can be represented as a typed term [Con86, NPS90] and particularly the Calculus of Inductive Constructions [Coq85]. A notion of coherence is introduced between a specification and a program containing annotations as in the Hoare sense. This notion is based on the definition of an extraction function called the weak extraction. Such an annotated program can give a method to reconstruct a set of proof obligations needed to have a proof of the initial specification. This can be seen either as a method o...
Methods  The Basic Units for Planning and Verifying Proofs
 In Proceedings of Jahrestagung fur Kunstliche Intelligenz, Saarbrucken
, 1992
"... This paper concerns a knowledge structure called method , within a computational model for human oriented deduction. With human oriented theorem proving cast as an interleaving process of planning and verification, the body of all methods reflects the reasoning repertoire of a reasoning system. Whil ..."
Abstract

Cited by 17 (4 self)
 Add to MetaCart
This paper concerns a knowledge structure called method , within a computational model for human oriented deduction. With human oriented theorem proving cast as an interleaving process of planning and verification, the body of all methods reflects the reasoning repertoire of a reasoning system. While we adopt the general structure of methods introduced by Alan Bundy, we make an essential advancement in that we strictly separate the declarative knowledge from the procedural knowledge. This is achieved by postulating some standard types of knowledge we have identified, such as inference rules, assertions, and proof schemata, together with corresponding knowledge interpreters. Our approach in effect changes the way deductive knowledge is encoded: A new compound declarative knowledge structure, the proof schema, takes the place of complicated procedures for modeling specific proof strategies. This change of paradigm not only leads to representations easier to understand, it also enables us...
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 16 (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.
Implementing a Model Checker for LEGO
 Proc. of the 4th Inter Symp. of Formal Methods Europe, FME'97: Industrial Applications and Strengthened Foundations of Formal Methods
, 1997
"... . Interactive theorem proving gives a general approach for modelling and verification of both hardware and software systems but requires significant human efforts to deal with many tedious proofs. To be used in practical, we need some automatic tools such as model checkers to deal with those tedious ..."
Abstract

Cited by 15 (3 self)
 Add to MetaCart
. Interactive theorem proving gives a general approach for modelling and verification of both hardware and software systems but requires significant human efforts to deal with many tedious proofs. To be used in practical, we need some automatic tools such as model checkers to deal with those tedious proofs. In this paper, we formalise a verification system of both CCS and an imperative language in LEGO which can be used to verify both finite and infinite problems. Then a model checker, LegoMC, is implemented to generate the LEGO proof terms of finite models automatically. Therefore people can use LEGO to verify a general problem and throw some finite subproblems to be verified by LegoMC. On the other hand, this integration extends the power of model checking to verify more complicated and infinite models as well. 1 Introduction Interactive theorem proving gives a general approach for modelling and verification of both hardware and software systems but requires significant human effor...
Experiments with ZF Set Theory in HOL and Isabelle
 IN PROCEEDINGS OF THE 8TH INTERNATIONAL WORKSHOP ON HIGHER ORDER LOGIC THEOREM PROVING AND ITS APPLICATIONS, LNCS
, 1995
"... Most general purpose proof assistants support versions of typed higher order logic. Experience has shown that these logics are capable of representing most of the mathematical models needed in Computer Science. However, perhaps there exist applications where ZFstyle set theory is more natural, ..."
Abstract

Cited by 13 (1 self)
 Add to MetaCart
Most general purpose proof assistants support versions of typed higher order logic. Experience has shown that these logics are capable of representing most of the mathematical models needed in Computer Science. However, perhaps there exist applications where ZFstyle set theory is more natural, or even necessary. Examples may include Scott's classical inverselimit construction of a model of the untyped  calculus (D1 ) and the semantics of parts of the Z specification notation. This paper
Ats: A language that combines programming with theorem proving
 of Lecture Notes in Computer Science
, 2005
"... Abstract. ATS is a language with a highly expressive type system that supports a restricted form of dependent types in which programs are not allowed to appear in type expressions. The language is separated into two components: a proof language in which (inductive) proofs can be encoded as (total re ..."
Abstract

Cited by 13 (0 self)
 Add to MetaCart
Abstract. ATS is a language with a highly expressive type system that supports a restricted form of dependent types in which programs are not allowed to appear in type expressions. The language is separated into two components: a proof language in which (inductive) proofs can be encoded as (total recursive) functions that are erased before execution, and a programming language for constructing programs to be evaluated. This separation enables a paradigm that combines programming with theorem proving. In this paper, we illustrate by example how this programming paradigm is supported in ATS.
Dependent types at work
 LERNET 2008. LNCS
, 2009
"... In these lecture notes we give an introduction to functional programming with dependent types. We use the dependently typed programming language Agda which is an extension of MartinLöf type theory. First we show how to do simply typed functional programming in the style of Haskell and ML. Some dif ..."
Abstract

Cited by 12 (1 self)
 Add to MetaCart
In these lecture notes we give an introduction to functional programming with dependent types. We use the dependently typed programming language Agda which is an extension of MartinLöf type theory. First we show how to do simply typed functional programming in the style of Haskell and ML. Some differences between Agda’s type system and the HindleyMilner type system of Haskell and ML are also discussed. Then we show how to use dependent types for programming and we explain the basic ideas behind typechecking dependent types. We go on to explain the CurryHoward identification of propositions and types. This is what makes Agda a programming logic and not only a programming language. According to CurryHoward, we identify programs and proofs, something which is possible only by requiring that all program terminate. However, at the end of these notes we present a method for encoding partial and general recursive functions as total functions using dependent types.