Deciding equivalence of finite tree automata
SIAM Journal on Computing
Typechecking for XML transformers
PODS '00 Proceedings of the nineteenth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
Regular expression types for XML
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Towards static type checking for XSLT
DocEng '01 Proceedings of the 2001 ACM Symposium on Document engineering
Transformation of Documents and Schemas by Patterns and Contextual Conditions
PODP '96 Proceedings of the Third International Workshop on Principles of Document Processing
XDuce: A statically typed XML processing language
ACM Transactions on Internet Technology (TOIT)
XML schema containment checking based on semi-implicit techniques
CIAA'03 Proceedings of the 8th international conference on Implementation and application of automata
Parametric polymorphism for XML
ACM Transactions on Programming Languages and Systems (TOPLAS)
Towards practical typechecking for macro tree transducers
DBPL'07 Proceedings of the 11th international conference on Database programming languages
Hi-index | 0.00 |
Checking tree automata containment is a fundamental operation in static verification of XML processing programs. However, tree automata containment problem is known to be EXPTIME-complete and a standard algorithm with determinization of automata easily blows up even in practical cases. Hosoya, Vouillon, and Pierce have proposed a top-down algorithm that efficiently works for a large class of typical instances. However, there still remains a considerable inefficiency because of repeated calculation incurred by backtracking. In this paper, we propose a non-backtracking top-down algorithm which improves this inefficiency. In the algorithm, we introduce “dependencies” among performed computations and, by exploiting these, we can recover certain kinds of information lost by backtracking. One difficulty in constructing such algorithm is, however, that, since some dependency information can be useless, we may be misled to needless computation by using such information. To alleviate this problem, we carefully check the usefulness of each dependency whenever we use it. Since these checks introduce a subtlety to our algorithm, we rigorously formalize it with a correctness proof. Our preliminary experiments show that our algorithm works more efficiently compared to the previous algorithm.