Results 11  20
of
44
A Step Towards the Mechanization of Partial Functions: Domains as Inductive Predicates
, 1998
"... . This work is centred on the specification of partial operations in a system based on a classical logic with total functions. We present a style with preconditions: our method enables calculation of the domain of a partial function f independently of calculation of f. We also study the influen ..."
Abstract

Cited by 14 (1 self)
 Add to MetaCart
. This work is centred on the specification of partial operations in a system based on a classical logic with total functions. We present a style with preconditions: our method enables calculation of the domain of a partial function f independently of calculation of f. We also study the influence of this style upon the proof facility and the later use of the specification. 1 Introduction In this paper we are in the context of a logic which does not incorporate the notion of partiality and where any function is total. This choice is justified by the power of the underlying logic and by the expressive power of the associated languages. In this context, various tricks are used to encode the partiality. In a typed world, a total function of type ! 0 is defined for every value of type . Thus we have to encode a partial function whose arguments and result are respectively of type 1 and 2 into a total function of type ! 0 . Usually 1 and are identical but 2 and 0 are...
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 12 (6 self)
 Add to MetaCart
(Show Context)
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.
Termination analysis by inductive evaluation
 15TH INTERNATIONAL CONFERENCE ON AUTOMATED DEDUCTION
, 1998
"... We present a new approach for automatic termination analysis of functional programs. Several methods have been presented which try to find a wellfounded ordering such that the arguments in the recursive calls are smaller than the corresponding inputs. However, previously developed approaches for au ..."
Abstract

Cited by 11 (8 self)
 Add to MetaCart
We present a new approach for automatic termination analysis of functional programs. Several methods have been presented which try to find a wellfounded ordering such that the arguments in the recursive calls are smaller than the corresponding inputs. However, previously developed approaches for automated termination analysis often disregard the conditions under which the recursive calls are evaluated. Hence, the existing methods fail for an important class of algorithms where the necessary information for proving termination is `hidden ' in the conditions. In this paper we develop the inductive evaluation method which analyzes the auxiliary functions occurring in the conditions of the recursive calls. We also discuss an extension of our method to partial functions in order to determine their domains automatically. The proposed technique proved successful for termination analysis of numerous algorithms in functional as well as imperative programming languages.
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 10 (5 self)
 Add to MetaCart
(Show Context)
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
Extensions to the estimation calculus
 PROCEEDINGS OF THE 6TH INTERNATIONAL CONFERENCE ON LOGIC FOR PROGRAMMING AND AUTOMATED REASONING (LPAR`99), LNAI 1705
, 1999
"... Walther’s estimation calculus was designed to prove the termination of functional programs, and can also be used to solve the similar problem of proving the wellfoundedness of induction rules. However, there are certain features of the goal formulae which are more common to the problem of induction ..."
Abstract

Cited by 8 (1 self)
 Add to MetaCart
(Show Context)
Walther’s estimation calculus was designed to prove the termination of functional programs, and can also be used to solve the similar problem of proving the wellfoundedness of induction rules. However, there are certain features of the goal formulae which are more common to the problem of induction rule wellfoundedness than the problem of termination, and which the calculus cannot handle. We present a sound extension of the calculus that is capable of dealing with these features. The extension develops Walther’s concept of an argument bounded function in two ways: firstly, so that the function may be bounded below by its argument, and secondly, so that a bound may exist between two arguments of a predicate. Our calculus enables automatic proofs of the wellfoundedness of a large class of induction rules not captured by the original calculus.
Ensuring termination in ESFP
 Journal of Universal Computer Science
, 2000
"... Abstract: In previous papers we have proposed an elementary discipline of strong functional programming (ESFP), in which all computations terminate. A key feature of the discipline is that we introduce a type distinction between data which is known to be nite, and codata which is (potentially) innit ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
(Show Context)
Abstract: In previous papers we have proposed an elementary discipline of strong functional programming (ESFP), in which all computations terminate. A key feature of the discipline is that we introduce a type distinction between data which is known to be nite, and codata which is (potentially) innite. To ensure termination, recursion over data must be wellfounded, and corecursion (the denition schema for codata) must be productive, and both of these restrictions must be enforced automatically by the compiler. In our previous work we used abstract interpretation to establish the productivity of corecursive denitions in an elementary strong functional language. We show here that similar ideas can be applied in the dual case to check whether recursive function denitions are strongly normalising. We thus exhibit a powerful termination analysis technique which we demonstrate can be extended to partial functions.
Another Look at Nested Recursion
"... Functions specified by nested recursions are difficult to define and reason about. We present several ameliorative techniques that use deduction in a classical higherorder logic. First, we discuss how an apparent circular dependency between the proof of nested termination conditions and the defin ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
Functions specified by nested recursions are difficult to define and reason about. We present several ameliorative techniques that use deduction in a classical higherorder logic. First, we discuss how an apparent circular dependency between the proof of nested termination conditions and the definition of the specified function can be avoided. Second, we propose a method that allows the specified function to be defined in the absence of a termination relation. Finally, we show how our techniques extend to nested program schemes, where a termination relation cannot be found until schematic parameters have been filled in. In each of these techniques, suitable induction theorems are automatically derived.
Automatic Termination Analysis for Partial Functions Using Polynomial Orderings
 In Proc. 4th SAS
, 1997
"... . We present a method for automatically determining the input data for which functional programs terminate. In particular, we consider functional programs which do not terminate for each input thus defining partial functions. To characterize the domains of such partial functions, termination predica ..."
Abstract

Cited by 6 (3 self)
 Add to MetaCart
(Show Context)
. We present a method for automatically determining the input data for which functional programs terminate. In particular, we consider functional programs which do not terminate for each input thus defining partial functions. To characterize the domains of such partial functions, termination predicates have been introduced recently. Termination predicates can be synthesized inductively if suitable wellfounded orderings are given. Up to now, these wellfounded orderings have to be fixed in advance by a user. In this paper, we enable the automatic generation of wellfounded polynomial orderings for termination predicate synthesis. We illustrate the problems that prevent the direct use of known techniques for that task, and we present solutions for overcoming these problems. The proposed method proved to be successful for numerous examples including functional as well as imperative programs. 1 Introduction Proving the termination of programs is a central problem in the development of co...
Induction Proofs with Partial Functions
 Journal of Automated Reasoning
, 1998
"... In this paper we present a method for automated induction proofs about partial functions. We show that most wellknown techniques developed for (explicit) induction theorem proving are unsound when dealing with partial functions. But surprisingly, by slightly restricting the application of these te ..."
Abstract

Cited by 6 (4 self)
 Add to MetaCart
(Show Context)
In this paper we present a method for automated induction proofs about partial functions. We show that most wellknown techniques developed for (explicit) induction theorem proving are unsound when dealing with partial functions. But surprisingly, by slightly restricting the application of these techniques, it is possible to develop a calculus for automated induction proofs with partial functions. In particular, under certain conditions one may even generate induction schemes from the recursions of nonterminating algorithms. The need for such induction schemes and the power of our calculus have been demonstrated on a large collection of nontrivial theorems (including Knuth and Bendix' critical pair lemma). In this way, existing induction theorem provers can be directly extended to partial functions without major changes of their logical framework.
ContextMoving Transformations for Function Verification
, 1999
"... Several induction theorem provers have been developed which support mechanized verification of functional programs. Unfortunately, a major problem is that they often fail in verifying tail recursive functions (which correspond to imperative programs). However, in practice imperative programs are ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
Several induction theorem provers have been developed which support mechanized verification of functional programs. Unfortunately, a major problem is that they often fail in verifying tail recursive functions (which correspond to imperative programs). However, in practice imperative programs are used almost exclusively. We present an automatic transformation to tackle this problem. It transforms functions which are hard to verify into functions whose correctness can be shown by the existing provers. In contrast to classical program transformations, the aim of our technique is not to increase efficiency, but to increase veriability. Therefore, this paper introduces a novel application area for program transformations and it shows that such techniques can in fact solve some of the most urgent current challenge problems in automated verification and induction theorem proving.