TY - JOUR
T1 - Polynomial-time inverse computation for accumulative functions with multiple data traversals
AU - Matsuda, Kazutaka
AU - Inaba, Kazuhiro
AU - Nakano, Keisuke
N1 - Funding Information:
Acknowledgements We wish to thank Akimasa Morihata, Meng Wang, and Soichiro Hidaka, who gave us many valuable comments on an earlier version of this work. The discussions in Sect. 5.5.1 are hinted from Naoki Kobayashi and Takeshi Tsukada. We also thank Janis Voigtländer who pointed out the relationship between Sect. 4.1 and deaccumulation. This work was partially supported by Japan Society for the Promotion of Science, Grant-in-Aid for Research Activity Start-up 22800003, when the first author was in Tohoku University, and this work is partially supported by Japan Society for the Promotion of Science, Grant-in-Aid for Young Scientists (B) 24700020.
Publisher Copyright:
© The Author(s) 2013. This article is published with open access at Springerlink.com
PY - 2012/3/1
Y1 - 2012/3/1
N2 - The problem of inverse computation has many potential applications such as serialization/deserialization, providing support for undo, and test-case generation for software testing. In this paper, we propose an inverse computation method that always terminates for a class of functions known as parameter-linear macro tree transducers, which involve multiple data traversals and the use of accumulations. The key to our method is the observation that a function in the class can be regarded as a non-accumulative context-generating transformation without multiple data traversals. Accordingly, we demonstrate that it is easy to achieve terminating inverse computation for the class by context-wise memoization of the inverse computation results. We also show that when we use a tree automaton to express the inverse computation results, the inverse computation runs in time polynomial to the size of the original output and the textual program size.
AB - The problem of inverse computation has many potential applications such as serialization/deserialization, providing support for undo, and test-case generation for software testing. In this paper, we propose an inverse computation method that always terminates for a class of functions known as parameter-linear macro tree transducers, which involve multiple data traversals and the use of accumulations. The key to our method is the observation that a function in the class can be regarded as a non-accumulative context-generating transformation without multiple data traversals. Accordingly, we demonstrate that it is easy to achieve terminating inverse computation for the class by context-wise memoization of the inverse computation results. We also show that when we use a tree automaton to express the inverse computation results, the inverse computation runs in time polynomial to the size of the original output and the textual program size.
KW - Functional programming
KW - Inverse computation
KW - Program inversion
KW - Program transformation
KW - Tree automata
KW - Tree transducers
UR - http://www.scopus.com/inward/record.url?scp=85030155675&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85030155675&partnerID=8YFLogxK
U2 - 10.1007/s10990-013-9097-8
DO - 10.1007/s10990-013-9097-8
M3 - Article
AN - SCOPUS:85030155675
VL - 25
SP - 3
EP - 38
JO - LISP and Symbolic Computation
JF - LISP and Symbolic Computation
SN - 1388-3690
IS - 1
ER -