Results 1  10
of
14
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).
Termination analysis for functional programs using term orderings
 IN PROCEEDINGS OF THE SECOND INTERNATIONAL STATIC ANALYSIS SYMPOSIUM, LNCS 983
, 1995
"... To prove the termination of a functional program there has to be a wellfounded ordering such that the arguments in each recursive call are smaller than the corresponding inputs. In this paper we present a procedure for automated termination proofs of functional programs. In contrast to previously p ..."
Abstract

Cited by 31 (12 self)
 Add to MetaCart
To prove the termination of a functional program there has to be a wellfounded ordering such that the arguments in each recursive call are smaller than the corresponding inputs. In this paper we present a procedure for automated termination proofs of functional programs. In contrast to previously presented methods a suited wellfounded ordering does not have to be fixed in advance by the user, but can be synthesized automatically. For that purpose we use approaches developed in the area of term rewriting systems for the automated generation of suited wellfounded term orderings. But unfortunately term orderings cannot be directly used for termination proofs of functional programs which call other algorithms in the arguments of their recursive calls. The reason is that while for the termination of term rewriting systems orderings between terms are needed, for functional programs we need orderings between objects of algebraic data types. Our method solves this problem and enables term orderings to be used for termination proofs of functional programs.
Termination Checking with Types
, 1999
"... The paradigm of typebased termination is explored for functional programming with recursive data types. The article introduces , a lambdacalculus with recursion, inductive types, subtyping and bounded quanti cation. Decorated type variables representing approximations of inductive types ..."
Abstract

Cited by 28 (6 self)
 Add to MetaCart
The paradigm of typebased termination is explored for functional programming with recursive data types. The article introduces , a lambdacalculus with recursion, inductive types, subtyping and bounded quanti cation. Decorated type variables representing approximations of inductive types are used to track the size of function arguments and return values. The system is shown to be type safe and strongly normalizing. The main novelty is a bidirectional type checking algorithm whose soundness is established formally.
Synthesis of Induction Orderings for Existence Proofs
 IN PROC. OF 12TH INTERNATIONAL CONFERENCE ON AUTOMATED DEDUCTION
, 1994
"... In the field of program synthesis inductive existence proofs are used to compute algorithmic definitions for the skolem functions under consideration. While in general the recursion orderings of the given function definitions form the induction ordering this approach often fail for existence pro ..."
Abstract

Cited by 25 (3 self)
 Add to MetaCart
In the field of program synthesis inductive existence proofs are used to compute algorithmic definitions for the skolem functions under consideration. While in general the recursion orderings of the given function definitions form the induction ordering this approach often fail for existence proofs. In many cases a completely new induction ordering has to be invented to prove an existence formula. In this paper we describe a topdown approach for computing appropriate induction orderings for existence formulas. We will use constraints from the knowledge of guiding inductive proofs to select proper induction variables and to compute a first outline of the proof. Based on this outline the induction ordering is finally refined and synthesized.
A ConstructorBased Approach for Positive/NegativeConditional Equational Specifications
 3 rd CTRS 1992, LNCS 656
, 1992
"... : We study algebraic specifications given by finite sets R of positive/negativeconditional equations (i. e. universally quantified firstorder implications with a single equation in the succedent and a conjunction of positive and negative (i. e. negated) equations in the antecedent). The class of m ..."
Abstract

Cited by 14 (10 self)
 Add to MetaCart
: We study algebraic specifications given by finite sets R of positive/negativeconditional equations (i. e. universally quantified firstorder implications with a single equation in the succedent and a conjunction of positive and negative (i. e. negated) equations in the antecedent). The class of models of such a specification R does not contain in general a minimum model in the sense that it can be mapped to any other model by some homomorphism. We present a constructorbased approach for assigning appropriate semantics to such specifications. We introduce two syntactic restrictions: firstly, for a condition to be fulfilled we require the evaluation values of the terms of the negative equations to be in the set of evaluation values of constructor ground terms; secondly, we restrict the constructor rules to have "Horn" form and to be "constructorpreserving". A reduction relation for R is defined, which allows to generalize the fundamental results for positiveconditional rewrite sys...
A Recursive Techniques Editor for Prolog
 Instructional Science
, 2000
"... We describe an editor geared to recursive Prolog procedures. It is similar to the structure editors built for many programming languages, except that instead of just ensuring the correctness of the syntax of the procedures built by the editor, the editor also ensures the correct use of recursion. ..."
Abstract

Cited by 11 (3 self)
 Add to MetaCart
We describe an editor geared to recursive Prolog procedures. It is similar to the structure editors built for many programming languages, except that instead of just ensuring the correctness of the syntax of the procedures built by the editor, the editor also ensures the correct use of recursion. By correct here we mean that the recursive procedure is guaranteed to terminate and to be welldefined. Within these constraints we have tried to ensure that the range of procedures that can be built is as complete as possible. Key words and phrases. Prolog environments, programming techniques, structure editor, recursion, termination, rewrite rules. 1 Why a Recursion Editor? The general question being addressed in this paper is "what environmental tools can and should be provided to programmers to assist them to write programs?". Some of the standard answers to this question are: ffl structure editors: to ensure that the user writes only syntactically correct programs; ffl cross re...
Termination Analysis for Partial Functions
 IN PROCEEDINGS OF THE THIRD INTERNATIONAL STATIC ANALYSIS SYMPOSIUM (SAS'96
, 1996
"... This paper deals with automated termination analysis for partial functional programs, i.e. for functional programs which do not terminate for each input. We present a method to determine their domains (resp. nontrivial subsets of their domains) automatically. More precisely, for each functional p ..."
Abstract

Cited by 11 (6 self)
 Add to MetaCart
This paper deals with automated termination analysis for partial functional programs, i.e. for functional programs which do not terminate for each input. We present a method to determine their domains (resp. nontrivial subsets of their domains) automatically. More precisely, for each functional program a termination predicate algorithm is synthesized, which only returns true for inputs where the program is terminating. To ease subsequent reasoning about the generated termination predicates we also present a procedure for their simplification.
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
. 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 ...
Termination of Algorithms over NonFreely Generated Data Types
 In Proc. CADE13
, 1996
"... . Termination proofs for recursively defined operations serve several purposes: On the one hand, of course, they ensure the termination of the respective algorithms which is an essential topic in software verification. On the other hand, a successful termination proof allows to use the termination o ..."
Abstract

Cited by 10 (1 self)
 Add to MetaCart
. Termination proofs for recursively defined operations serve several purposes: On the one hand, of course, they ensure the termination of the respective algorithms which is an essential topic in software verification. On the other hand, a successful termination proof allows to use the termination ordering as an induction ordering for future inductive proofs. So far, in the area of explicit inductive theorem proving only data types were admitted whose objects possess a unique syntactical representation. These data types include nat 1 , lists, and trees. However, there are data types that do not possess this property, as, for instance, finite sets and finite arrays, which are frequently used for specifications in software verification. In this paper we are concerned with these data types. We admit them to explicit inductive theorem proving and, furthermore, we present an approach for an automated termination analysis of recursively defined algorithms over these data types. 1 Motivatio...
Termination analysis for functional programs
 AUTOMATED DEDUCTION  A BASIS FOR APPLICATIONS, VOL. III, APPLIED LOGIC SERIES 10
, 1998
"... Proving termination is a central problem in software development and formal methods for termination analysis are essential for program verification. However, since the halting problem is undecidable and totality of functions is not even semidecidable, there is no procedure to prove or disprove the ..."
Abstract

Cited by 8 (4 self)
 Add to MetaCart
Proving termination is a central problem in software development and formal methods for termination analysis are essential for program verification. However, since the halting problem is undecidable and totality of functions is not even semidecidable, there is no procedure to prove or disprove the