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 non-terminating 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 post-processing 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.
@InProceedings{nishida_et_al:LIPIcs.RTA.2011.283, author = {Nishida, Naoki and Vidal, German}, title = {{Program Inversion for Tail Recursive Functions}}, booktitle = {22nd International Conference on Rewriting Techniques and Applications (RTA'11)}, pages = {283--298}, series = {Leibniz International Proceedings in Informatics (LIPIcs)}, ISBN = {978-3-939897-30-9}, ISSN = {1868-8969}, year = {2011}, volume = {10}, editor = {Schmidt-Schauss, Manfred}, publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik}, address = {Dagstuhl, Germany}, URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.RTA.2011.283}, URN = {urn:nbn:de:0030-drops-31253}, doi = {10.4230/LIPIcs.RTA.2011.283}, annote = {Keywords: term rewriting, program transformation, termination} }
Feedback for Dagstuhl Publishing