Results 1  10
of
15
Termination of Nested and Mutually Recursive Algorithms
, 1996
"... This paper deals with automated termination analysis for functional programs. Previously developed methods for automated termination proofs of functional programs often fail for algorithms with nested recursion and they cannot handle algorithms with mutual recursion. We show that termination proofs ..."
Abstract

Cited by 40 (9 self)
 Add to MetaCart
This paper deals with automated termination analysis for functional programs. Previously developed methods for automated termination proofs of functional programs often fail for algorithms with nested recursion and they cannot handle algorithms with mutual recursion. We show that termination proofs for nested and mutually recursive algorithms can be performed without having to prove the correctness of the algorithms simultaneously. Using this result, nested and mutually recursive algorithms do no longer constitute a special problem and the existing methods for automated termination analysis can be extended to nested and mutual recursion in a straightforward way. We give some examples of algorithms whose termination can now be proved automatically (including wellknown challenge problems such as McCarthy's f_91 function).
Constructing Recursion Operators in Intuitionistic Type Theory
 Journal of Symbolic Computation
, 1984
"... MartinLöf's Intuitionistic Theory of Types is becoming popular for formal reasoning about computer programs. To handle recursion schemes other than primitive recursion, a theory of wellfounded relations is presented. Using primitive recursion over higher types, induction and recursion are for ..."
Abstract

Cited by 23 (5 self)
 Add to MetaCart
(Show Context)
MartinLöf's Intuitionistic Theory of Types is becoming popular for formal reasoning about computer programs. To handle recursion schemes other than primitive recursion, a theory of wellfounded relations is presented. Using primitive recursion over higher types, induction and recursion are formally derived for a large class of wellfounded relations. Included are < on natural numbers, and relations formed by inverse images, addition, multiplication, and exponentiation of other relations. The constructions are given in full detail to allow their use in theorem provers for Type Theory, such as Nuprl. The theory is compared with work in the field of ordinal recursion over higher types.
Representing Inductively Defined Sets by Wellorderings in MartinLöf's Type Theory
, 1996
"... We prove that every strictly positive endofunctor on the category of sets generated by MartinLof's extensional type theory has an initial algebra. This representation of inductively defined sets uses essentially the wellorderings introduced by MartinLof in "Constructive Mathematics and C ..."
Abstract

Cited by 15 (0 self)
 Add to MetaCart
We prove that every strictly positive endofunctor on the category of sets generated by MartinLof's extensional type theory has an initial algebra. This representation of inductively defined sets uses essentially the wellorderings introduced by MartinLof in "Constructive Mathematics and Computer Programming". 1 Background MartinLof [10] introduced a general set former for wellorderings in intuitionistic type theory. It has formation rule Aset (x : A) B(x)set W x:A B(x)set introduction rule a : A (x : B(a)) b(x) : W x:A B(x) sup(a; b) : W x:A B(x) : elimination rule c : W x:A B(x) (x : A; y : B(x) !W x:A B(x); z : Q t:B(x) C(y(t))) d(x; y; z) : C(sup(a; b)) T (c; d) : C(c) and equality rule a : A (x : B(a)) b(x) : W x:A B(x) (x : A; y : B(x) !W x:A B(x); z : Q t:B(x) C(y(t))) d(x; y; z) : C(sup(a; b)) T (sup(a; b); d) = d(a; b; t:T (b(t); d) : C(c) The elimination rule can be viewed either as a rule of transfinite induction or as a rule of definition by transfinite re...
Automated Termination Proofs with Measure Functions
 In Proc. 19th Annual German Conf. on AI, LNAI 981
, 1995
"... . This paper deals with the automation of termination proofs for recursively defined algorithms (i.e. algorithms in a pure functional language). Previously developed methods for their termination proofs either had a low degree of automation or they were restricted to one single fixed measure functio ..."
Abstract

Cited by 10 (6 self)
 Add to MetaCart
(Show Context)
. This paper deals with the automation of termination proofs for recursively defined algorithms (i.e. algorithms in a pure functional language). Previously developed methods for their termination proofs either had a low degree of automation or they were restricted to one single fixed measure function to compare data objects. To overcome these drawbacks we introduce a calculus for automated termination proofs which is able to handle arbitrary measure functions based on polynomial norms. 1 Introduction Termination of algorithms is a central problem in software development. For an automation of program verification, termination proofs have to be performed mechanically, i.e. without human support. Of course, as the halting problem is undecidable, there is no procedure to prove or disprove termination of all algorithms. In this paper we focus on recursively defined algorithms, i.e. algorithms in a pure (eager) functional language without iterative loops. An algorithm f(x) terminates, if ...
Classical Propositional Decidability via Nuprl Proof Extraction
 THEOREM PROVING IN HIGER ORDER LOGICS, VOLUME 1479 OF LECTURE NOTES IN COMPUTER SCIENCE
, 1998
"... This paper highlights a methodology of Nuprl proof that results in efficient programs that are more readable than those produced by other established methods for extracting programs from proofs. We describe a formal constructive proof of the decidability of a sequent calculus for classical pro ..."
Abstract

Cited by 8 (3 self)
 Add to MetaCart
This paper highlights a methodology of Nuprl proof that results in efficient programs that are more readable than those produced by other established methods for extracting programs from proofs. We describe a formal constructive proof of the decidability of a sequent calculus for classical propositional logic. The proof is implemented in the Nuprl system and the resulting proof object yields a "correctbyconstruction" program for deciding propositional sequents. If the sequent is valid, the program reports that fact; otherwise, the program returns a counterexample in the form of a falsifying assignment. We employ Kleene's strong threevalued logic to give more informativecounterexamples, it is also shown how this semantics agrees with the standard twovalued presentation.
A Practical Extension Mechanism for Decision Procedures
 J. of Universal Computer Science
, 2000
"... this paper we go a step further and propose an extension mechanism which allows for the `onthey' generation of lemmas. This is an important improvement sinceif suitably coupled with a lemma speculation facilityit relieves the user from the burden of providing lemmas in many situations there ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
this paper we go a step further and propose an extension mechanism which allows for the `onthey' generation of lemmas. This is an important improvement sinceif suitably coupled with a lemma speculation facilityit relieves the user from the burden of providing lemmas in many situations thereby resulting in increased automation. Furthermore, in order to show its practical usability, we illustrate how our schema can lift a decision procedure for the quantierfree fragment of Presburger Arithmetic to tackle nonlinear problems of signicant diculty, based on anization techniques [6].
Inductive invariants for nested recursion
 Theorem Proving in Higher Order Logics (TPHOLS'03), volume 2758 of LNCS
, 2003
"... Abstract. We show that certain inputoutput relations, termed inductive invariants are of central importance for termination proofs of algorithms defined by nested recursion. Inductive invariants can be used to enhance recursive function definition packages in higherorder logic mechanizations. We d ..."
Abstract

Cited by 5 (2 self)
 Add to MetaCart
Abstract. We show that certain inputoutput relations, termed inductive invariants are of central importance for termination proofs of algorithms defined by nested recursion. Inductive invariants can be used to enhance recursive function definition packages in higherorder logic mechanizations. We demonstrate the usefulness of inductive invariants on a large example of the BDD algorithm Apply. Finally, we introduce a related concept of inductive fixpoints with the property that for every functional in higherorder logic there exists a largest partial function that is such a fixpoint. 1
Decidability Extracted: SYNTHESIZING “CORRECTBYCONSTRUCTION” DECISION PROCEDURES FROM CONSTRUCTIVE PROOFS
, 1998
"... The topic of this thesis is the extraction of efficient and readable programs from formal constructive proofs of decidability. The proof methods employed to generate the efficient code are new and result in clean and readable Nuprl extracts for two nontrivial programs. They are based on the use of ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
The topic of this thesis is the extraction of efficient and readable programs from formal constructive proofs of decidability. The proof methods employed to generate the efficient code are new and result in clean and readable Nuprl extracts for two nontrivial programs. They are based on the use of Nuprl’s set type and techniques for extracting efficient programs from induction principles. The constructive formal theories required to express the decidability theorems are of independent interest. They formally circumscribe the mathematical knowledge needed to understand the derived algorithms. The formal theories express concepts that are taught at the senior college level. The decidability proofs themselves, depending on this material, are of interest and are presented in some detail. The proof of decidability of classical propositional logic is relative to a semantics based on Kleene’s strong threevalued logic. The constructive proof of intuitionistic decidability presented here is the first machine formalization of this proof. Theexposition reveals aspects of the Nuprl tactic collection relevant to the creation of readable proofs; clear extracts and efficient code are illustrated in the discussion of the proofs.
Extracting Propositional Decidability: A proof of propositional decidability in constructive type theory and its extracted program.
, 1997
"... This paper describes a formal constructive proof of the decidability of a sequent calculus presentation of classical propositional logic. The Nuprl theories and proofs reported on here are part of a larger program to safely incorporate formally justified decision procedures into theorem provers. ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
This paper describes a formal constructive proof of the decidability of a sequent calculus presentation of classical propositional logic. The Nuprl theories and proofs reported on here are part of a larger program to safely incorporate formally justified decision procedures into theorem provers. The proof is implemented in the Nuprl system and the resulting proof object yields a "correctbyconstruction" program for deciding propositional sequents. In the case the sequent is valid, the program reports that fact; in the case the sequent is falsifiable, the program returns a falsifying assignment. Also, the semantics of the propositional sequents is formulated here in Kleene's strong threevalued logic which both: agrees with the standard two valued semantics; and gives finer information in case the proposition is falsifiable. Contents 1 Introduction 2 1.1 Related Work : : : : : : : : : : : : : : : : : : : : : : : : : : : 3 1.2 Overview of the Approach : : : : : : : : : : : :...
doi:10.1017/S0960129505004822 Printed in the United Kingdom Modelling general recursion in type theory
, 2003
"... Constructive type theory is an expressive programming language in which both algorithms and proofs can be represented. A limitation of constructive type theory as a programming language is that only terminating programs can be defined in it. Hence, general recursive algorithms have no direct formali ..."
Abstract
 Add to MetaCart
(Show Context)
Constructive type theory is an expressive programming language in which both algorithms and proofs can be represented. A limitation of constructive type theory as a programming language is that only terminating programs can be defined in it. Hence, general recursive algorithms have no direct formalisation in type theory since they contain recursive calls that satisfy no syntactic condition guaranteeing termination. In this work, we present a method to formalise general recursive algorithms in type theory. Given a general recursive algorithm, our method is to define an inductive specialpurpose accessibility predicate that characterises the inputs on which the algorithm terminates. The typetheoretic version of the algorithm is then defined by structural recursion on the proof that the input values satisfy this predicate. The method separates the computational and logical parts of the definitions and thus the resulting typetheoretic algorithms are clear, compact and easy to understand. They are as simple as their equivalents in a functional programming language, where there is no restriction on recursive calls. Here, we give a formal definition of the method and discuss its power and its limitations. 1.