Results 1 
6 of
6
Combining Syntactic and Semantic Bidirectionalization
 SUBMITTED TO ICFP’10
, 2010
"... Matsuda et al. (2007, ICFP) and Voigtländer (2009, POPL) introduced two techniques that given a sourcetoview function provide an update propagation function mapping an original source and an updated view back to an updated source, subject to standard consistency conditions. Being fundamentally dif ..."
Abstract

Cited by 15 (10 self)
 Add to MetaCart
Matsuda et al. (2007, ICFP) and Voigtländer (2009, POPL) introduced two techniques that given a sourcetoview function provide an update propagation function mapping an original source and an updated view back to an updated source, subject to standard consistency conditions. Being fundamentally different in approach, both techniques have their respective strengths and weaknesses. Here we develop a synthesis of the two techniques to good effect. On the intersection of their applicability domains we achieve more than what a simple union of applying the techniques side by side delivers.
Program inversion for tail recursive functions
 of LIPIcs
, 2011
"... Program inversion is a fundamental problem that has been addressed in many different programming settings and applications. In the context of term rewriting, several methods already exist for computing the inverse of an injective function. These methods, however, usually return nonterminating inver ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
Program inversion is a fundamental problem that has been addressed in many different programming settings and applications. In the context of term rewriting, several methods already exist for computing the inverse of an injective function. These methods, however, usually return nonterminating inverted functions when the considered function is tail recursive. In this paper, we propose a direct and intuitive approach to the inversion of tail recursive functions. Our new technique is able to produce good results even without the use of an additional postprocessing of determinization or completion. Moreover, when combined with a traditional approach to program inversion, it constitutes a promising approach to define a general method for program inversion. Our experimental results confirm that the new technique compares well with previous approaches.
Deaccumulation — Improving Provability
 Asian Computing Science Conference
, 2003
"... Several induction theorem provers were developed to verify functional programs mechanically. Unfortunately, automated verification usually fails for functions with accumulating arguments. In particular, this holds for tailrecursive functions that correspond to imperative programs, but also for prog ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
(Show Context)
Several induction theorem provers were developed to verify functional programs mechanically. Unfortunately, automated verification usually fails for functions with accumulating arguments. In particular, this holds for tailrecursive functions that correspond to imperative programs, but also for programs with nested recursion. Based on results from the theory of tree transducers, we develop an automatic transformation technique. It transforms accumulative functional programs into nonaccumulative ones, which are much better suited for automated verification by induction theorem provers. Hence, in contrast to classical program transformations aiming at improving the e#ciency, the goal of our deaccumulation technique is to improve the provability.
Automatic generation of generalization lemmas for proving properties of tailrecursive definitions
 In TPHOLs
, 2003
"... Abstract. Automatically proving properties of tailrecursive function definitions by induction is known to be challenging. The difficulty arises due to a property of a tailrecursive function definition typically expressed by instantiating the accumulator argument to be a constant only on one side o ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
(Show Context)
Abstract. Automatically proving properties of tailrecursive function definitions by induction is known to be challenging. The difficulty arises due to a property of a tailrecursive function definition typically expressed by instantiating the accumulator argument to be a constant only on one side of the property. The application of the induction hypothesis gets blocked in a proof attempt. Following an approach developed by Kapur and Subramaniam, a transformation heuristic is proposed which hypothesizes the other side of property to also have an occurrence of the same constant. Constraints on the transformation are identified which enable a generalization of the constant on both sides with the hope that the generalized conjecture is easier to prove. Conditions are generated from which intermediate lemmas necessary to make a proof attempt to succeed can be speculated. By considering structural properties of recursive definitions, it is possible to identify properties of the functions used in recursive definitions for the conjecture to be valid. The heuristic
Deaccumulation Techniques for Improving Provability ⋆,⋆⋆
"... Several induction theorem provers were developed to verify functional programs mechanically. Unfortunately, automatic verification often fails for functions with accumulating arguments. Using concepts from the theory of tree transducers and extending on earlier work, the paper develops automatic tra ..."
Abstract
 Add to MetaCart
(Show Context)
Several induction theorem provers were developed to verify functional programs mechanically. Unfortunately, automatic verification often fails for functions with accumulating arguments. Using concepts from the theory of tree transducers and extending on earlier work, the paper develops automatic transformations from accumulative functional programs into nonaccumulative ones, which are much better suited for mechanized verification. The overall goal is to reduce the need for generalizing induction hypotheses in (semi)automatic provers. Via the correspondence between imperative programs and tailrecursive functions, the presented approach can also help to reduce the need for inventing loop invariants in the verification of imperative programs. Key words: tree transducers, induction theorem proving, tail recursion, program transformation, program verification ⋆ This work extends the research reported by the same authors in [24]. ⋆⋆This is the author’s version of a work that was accepted for publication in Journal of Logic and Algebraic Programming. Changes resulting from the publishing process, such as peer review, editing, corrections, structural formatting, and other quality control mechanisms may not be reflected in this document. Changes may have been made to this work since it was submitted for publication. A definitive version was
Additional services for Journal of Functional Programming:
"... Enhancing semantic bidirectionalization via shape bidirectionalizer plugins ..."
Abstract
 Add to MetaCart
(Show Context)
Enhancing semantic bidirectionalization via shape bidirectionalizer plugins