Program Inversion for Tail Recursive Functions

被引:13
作者
Nishida, Naoki [1 ]
Vidal, German [2 ]
机构
[1] Nagoya Univ, Grad Sch Informat Sci, Chikusa Ku, Nagoya, Aichi 4648603, Japan
[2] Univ Politecn Valencia, MiST, DSIC, E-46022 Valencia, Spain
来源
22ND INTERNATIONAL CONFERENCE ON REWRITING TECHNIQUES AND APPLICATIONS (RTA'11) | 2011年 / 10卷
关键词
term rewriting; program transformation; termination; TERMINATION; INVERTER;
D O I
10.4230/LIPIcs.RTA.2011.283
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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.
引用
收藏
页码:283 / 298
页数:16
相关论文
共 33 条
[1]   The universal resolving algorithm and its correctness:: inverse computation in a functional language [J].
Abramov, S ;
Glück, R .
SCIENCE OF COMPUTER PROGRAMMING, 2002, 43 (2-3) :193-229
[2]  
Almendros-Jiménez JM, 2007, LECT NOTES COMPUT SC, V4449, P253
[3]  
Baader F., 1998, Term rewriting and all that
[4]  
Dershowitz N., 1999, REWRITING TECHNIQUES, P16
[5]   Context-moving transformations for function verification [J].
Giesl, J .
LOGIC-BASED PROGRAM SYNTHESIS AND TRANSFORMATION, PROCEEDINGS, 2000, 1817 :293-312
[6]  
Glück R, 2005, FUND INFORM, V66, P367
[7]  
Glück R, 2003, LECT NOTES COMPUT SC, V2895, P246
[8]  
Gramlich B., 2000, Fixed Points in Computer Science. Abstracts, P38
[9]  
Harrison P. G., 1988, P IFIP TC2 WORKSH PA, P153
[10]  
Kawabe M, 2005, LECT NOTES COMPUT SC, V3350, P219