<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">A Direct Translation from XPath to Nondeterministic Automata</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Nadime</forename><surname>Francis</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">ENS-Cachan</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Claire</forename><surname>David</surname></persName>
							<affiliation key="aff1">
								<orgName type="institution">Univ Paris-Est Marne-la-Vallée</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Leonid</forename><surname>Libkin</surname></persName>
							<affiliation key="aff2">
								<orgName type="institution">Univ of Edinburgh</orgName>
							</affiliation>
						</author>
						<title level="a" type="main">A Direct Translation from XPath to Nondeterministic Automata</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">C62EED009DC520DB55625F0552D70CE2</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T15:43+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Since navigational aspects of XPath correspond to first-order definability, it has been proposed to use the analogy with the very successful technique of translating LTL into automata, and produce efficient translations of XPath queries into automata on unranked trees. These translations can then be used for a variety of reasoning tasks such as XPath consistency, or optimization, under XML schema constraints. In the verification scenarios, translations into both nondeterministic and alternating automata are used. But while a direct translation from XPath into alternating automata is known, only an indirect translation into nondeterministic automata -going via intermediate logics -exists. A direct translation is desirable as most XML specifications have particularly nice translations into nondeterministic automata and it is natural to use such automata to reason about XPath and schemas. The goal of the paper is to produce such a direct translation of XPath into nondeterministic automata.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>XML reasoning tasks have been addressed in many recent papers. Typical problems include consistency of type declarations and constraints <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b1">2,</ref><ref type="bibr" target="#b15">16]</ref>, or of schema specifications and navigational properties <ref type="bibr" target="#b2">[3,</ref><ref type="bibr" target="#b10">11]</ref> or containment of XPath expressions <ref type="bibr" target="#b3">[4,</ref><ref type="bibr" target="#b4">5,</ref><ref type="bibr" target="#b9">10,</ref><ref type="bibr" target="#b17">18,</ref><ref type="bibr" target="#b25">26]</ref>. Static analysis tasks are often addressed using logic and automata-based techniques <ref type="bibr" target="#b5">[6]</ref>. Thus, due to the well-known correspondences between XML formalisms and logics and automata on trees, it is natural to apply logic and automata techniques to reasoning about XML.</p><p>Indeed, several attempts have been made to find generic logic/automata tools applicable in a variety of XML reasoning tasks. The idea of such approaches is roughly as follows. Suppose the task at hand is the well-known XPath containment problem under DTDs: given a DTD d and two XPath expressions e 1 and e 2 , is it true that d |= e 1 ⊆ e 2 ? In other words, is it true that for each XML tree T that conforms to d, the expression e 1 selects a subset of nodes selected by e 2 ? Suppose we can somehow capture by an automaton A e the set of nodes selected by the expression e 1 ∧ ¬e 2 , i.e., counterexamples to containment. Schemas such as DTDs, Relax NG, and others, are easily translated into tree automata (in fact most designs of schemas for XML are based on tree automata). So assume that we have an automaton A d that accepts trees that conform to d. Then to see whether d |= e 1 ⊆ e 2 one simply checks whether</p><formula xml:id="formula_0">L(A d × A e ) = ∅</formula><p>since a tree in L(A d × A e ) is a counterexample to d |= e 1 ⊆ e 2 . Throughout the paper, L(A) is the language accepted by automaton A.</p><p>This is essentially the same as the main idea of automata-based verification <ref type="bibr" target="#b5">[6]</ref>, whose goal is to check whether a program P satisfies a specification ϕ. One views an abstraction of P as an automaton A P , constructs an automaton A ¬ϕ capturing counterexamples to the specification (i.e., program executions that do not satisfy ϕ), and checks for nonemptiness of L(A P × A ¬ϕ ). If the language is nonempty, it contains counterexamples to the specification, i.e., bugs in P .</p><p>In the verification context, one most commonly deals with automata over ωwords, as they properly capture traces of program behavior and specifications. In the XML context, we deal with queries on finite trees, and finite (unranked) tree automata. The idea of adapting verification techniques to static analysis of XML is therefore very natural and it has been explored in a number of papers <ref type="bibr" target="#b4">[5,</ref><ref type="bibr" target="#b6">7,</ref><ref type="bibr" target="#b9">10,</ref><ref type="bibr" target="#b10">11,</ref><ref type="bibr" target="#b12">13,</ref><ref type="bibr" target="#b14">15,</ref><ref type="bibr" target="#b17">18]</ref>.</p><p>In the classical verification scenario, the specification logic is most often LTL (linear temporal logic), which happens to have the same expressive power as first-order logic (FO). In our context, we deal with XPath, whose navigational capabilities are expressible in FO and which, with an addition of a certain conditional construct, captures FO <ref type="bibr" target="#b18">[19]</ref>. If we want to adapt existing LTL-to-automata translations, there are two main approaches to it: translating formulae into nondeterministic, or alternating automata <ref type="bibr" target="#b29">[30,</ref><ref type="bibr" target="#b28">29]</ref>. The difference between these approaches is where the complexity lies -in the translation itself, or in checking nonemptiness of languages defined by automata: P P P P P P P P Task</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Automata</head><p>Nondeterministic Alternating Translation exponential polynomial Nonemptiness checking polynomial exponential</p><p>Both techniques have their advantages; the choice is really about the task to which algorithmic and optimization techniques will be applied. In the XML context, there are at least two reasons to seriously consider translating into nondeterministic automata. First, most schema formalisms come from nondeterministic tree automata, so these translations appear to be better suited for reasoning tasks involving schemas. Second, one may hope to use a rich arsenal of optimization tools developed for the original Vardi-Wolper translation <ref type="bibr" target="#b29">[30]</ref> of LTL into nondeterministic Büchi automata <ref type="bibr" target="#b7">[8,</ref><ref type="bibr" target="#b29">30,</ref><ref type="bibr" target="#b11">12]</ref> and adapt it for XML reasoning tasks.</p><p>Both approaches have been explored in the XML context. In <ref type="bibr" target="#b4">[5]</ref>, a direct translation from XPath to a certain type of alternating automata on unranked trees is given. In <ref type="bibr" target="#b14">[15]</ref>, translations into nondeterministic automata are explored, but the logic used for translation is not XPath, but rather an LTL-like logic on trees, first introduced in <ref type="bibr" target="#b24">[25]</ref> and used later in <ref type="bibr" target="#b18">[19]</ref>. While the translation is single-exponential, this is not satisfactory since the translation from XPath into that logic is single-exponential itself! Curiously enough, this does not make the whole translation from XPath into automata double-exponential, but showing this requires a careful analysis of the structure of subformulas of formulas which are translations of XPath queries. However, this intermediate step, with its exponential blowup, seems to preclude any possibility of providing efficient implementations of XPath-to-nondeterministic automata translations, as very little of the original XPath query can still be seen and used in its translation.</p><p>Thus, we would like to have a direct translation from XPath queries into nondeterministic tree automata. This is the goal of this paper. We provide such a translation; in fact, we do a bit more. Since XPath node queries select nodes from documents, we provide a translation into query automata <ref type="bibr" target="#b19">[20,</ref><ref type="bibr" target="#b21">22]</ref> which not only accept or reject trees, but also select nodes from them. For example, for the task of checking containment of queries, this will give us not just a yes/no answer, but a concise description of all counterexamples to containment.</p><p>The translation will be single-exponential: in case of nondeterministic automata, one cannot do better than this, as LTL fragments requiring this complexity are easily coded in XPath. As the exact language, we use Conditional XPath of <ref type="bibr" target="#b18">[19]</ref>, which is FO-complete; it extends the standard XPath with an analog of the temporal 'until' operator.</p><p>The translation follows the spirit of the Vardi-Wolper translation, and thus one can expect that optimization techniques developed for the latter (e.g., those in <ref type="bibr" target="#b7">[8,</ref><ref type="bibr" target="#b29">30,</ref><ref type="bibr" target="#b11">12]</ref>) can be adapted for our construction.</p><p>Organization In Section 2 we describe XML documents (unranked trees), automata for them, and query automata. In Section 3 we give the syntax and semantics of (conditional) XPath. The translation from XPath to query automata is given in Section 4. Its correctness is shown in Section 5.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Preliminaries</head><p>XML documents as unranked trees XML documents are normally abstracted as labeled unranked trees <ref type="bibr" target="#b20">[21,</ref><ref type="bibr" target="#b13">14,</ref><ref type="bibr" target="#b26">27]</ref>. Nodes in unranked trees are elements of N * , i.e. strings of natural numbers. We write s • s ′ for the concatenation of strings, and ε for the empty string. The basic binary relations on N * are:</p><formula xml:id="formula_1">-the child relation: s ≺ ch s ′ if s ′ = s • i, for some i ∈ N, and -the next-sibling relation: s ′ ≺ ns s ′′ if s ′ = s • i and s ′′ = s • (i + 1) for some s ∈ N * and i ∈ N.</formula><p>The descendant relation ≺ * ch and the younger sibling relation ≺ * ns are the reflexive-transitive closures of ≺ ch and ≺ ns .</p><p>An unranked tree domain D is a finite prefix-closed subset of N * such that s</p><formula xml:id="formula_2">• i ∈ D implies s • j ∈ D for all j &lt; i. If Σ is a finite alphabet, a Σ-labeled unranked tree is a pair T = (D, λ)</formula><p>, where D is a tree domain and λ is a labeling function λ : D → Σ.</p><p>Unranked tree automata A nondeterministic unranked tree automaton (cf. <ref type="bibr" target="#b20">[21,</ref><ref type="bibr" target="#b26">27]</ref>) over Σ-labeled trees is a triple A = (Q, F, δ) where Q is a finite set of states, F ⊆ Q is the set of final states, and δ is a mapping Q × Σ → 2 Q * such that each δ(q, a) is a regular language over Q. We assume that each δ(q, a) is given as an NFA (nondeterministic finite automaton). A run of A on a tree</p><formula xml:id="formula_3">T = (D, λ) is a function ρ A : D → Q such that if s ∈ D is a node with n children, and λ(s) = a, then the string ρ A (s • 0) • • • ρ A (s • (n − 1)) is in δ(ρ A (s), a). Thus, if s is a leaf labeled a, then ρ A (s) = q implies that ε ∈ δ(q, a). A run is accepting if ρ A (ε) ∈ F ,</formula><p>and a tree is accepted by A if an accepting run exists. Sets of trees accepted by automata A are called regular and denoted by L(A).</p><p>Unranked tree automata are relevant in the context of schemas for XML document. There are multiple notions of schemas. What is common for such notions is that their structural aspects are subsumed by unranked tree automata, see <ref type="bibr" target="#b16">[17]</ref> for several examples. More, translations from various schema formalisms into automata are usually very effective <ref type="bibr" target="#b16">[17]</ref>, and thus automata are naturally viewed as an abstraction of schemas in the XML literature. So when we speak of XML schemas, we shall assume that they are given by unranked tree automata.</p><p>Query automata It is well known that automata capture the expressiveness of MSO (monadic second order logic) sentences over finite and infinite strings and trees <ref type="bibr" target="#b27">[28]</ref>. The model of query automata <ref type="bibr" target="#b21">[22]</ref> captures the expressiveness of MSO formulae ϕ(x) with one free first-order variable -that is, MSO-definable unary queries. We present here a nondeterministic version, as in <ref type="bibr" target="#b19">[20,</ref><ref type="bibr" target="#b8">9]</ref>.</p><p>A query automaton (QA) for Σ-labeled unranked trees is a tuple QA = (Q, F, Q s , δ), where (Q, F, δ) is a nondeterministic unranked tree automaton, and Q s ⊆ Q is the set of selecting states. The runs of QA on a tree T are defined as the runs of (Q, F, δ) on T . Each run ρ of QA on a tree T = (D, λ) defines the set S ρ (T ) = {s ∈ D | ρ(s) ∈ Q s } of nodes assigned to a selecting state. The unary query defined by QA is then, under the existential semantics,</p><formula xml:id="formula_4">QA ∃ (T ) = {S ρ (T ) | ρ is an accepting run of QA on T }.</formula><p>Alternatively, one can define QA ∀ (T ) under the universal semantics as {S ρ (T ) | ρ is an accepting run of QA on T }. Both semantics capture the class of unary MSO queries <ref type="bibr" target="#b19">[20]</ref>.</p><p>To eliminate the need to choose the semantics, and problems related to it (for example, the most natural constructing for the complement of a QA under the existential semantics produces a QA under the universal semantics), one can use single-run query automata. Such QA satisfy the conditions that for every tree T , and every two accepting runs ρ 1 and ρ 2 on T , we have S ρ1 (T ) = S ρ2 (T ). For such QAs, we can unambiguously define the set of selected nodes as QA(T ) = S ρ (T ), where ρ is an arbitrarily chosen accepting run. This is not a restriction in terms of the expressiveness, as the following result is known: <ref type="bibr" target="#b8">[9,</ref><ref type="bibr" target="#b22">23,</ref><ref type="bibr" target="#b23">24,</ref><ref type="bibr" target="#b14">15]</ref>) For every query automaton there exists an equivalent single-run query automaton.</p><formula xml:id="formula_5">Proposition 1. (see</formula><p>It is known that nonemptiness problem for QAs (single-run, or under the existential semantics) is solvable in polynomial time. Single-run QAs are easily closed under intersection: the usual product construction works. Moreover, if one takes a product A × QA of a tree automaton and a single-run QA (where selecting states are pairs containing a selecting state of QA), the result is a single-run QA, and the nonemptiness problem for it is solvable in polynomial time too. This makes single-run QAs convenient for reasoning tasks, as outlined in the introduction.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Conditional XPath queries</head><p>We present a first-order complete extension of XPath, called conditional XPath, or CXPath <ref type="bibr" target="#b18">[19]</ref>. To keep notations in translations manageable, we introduce very minor modifications to the syntax: we use an existential quantifier E instead of the usual XPath node test brackets [ ], and we use symbols for the main XPath axes, rather then their verbose analogs.</p><p>The node formulae α and path formulae β of CXPath are given by:</p><formula xml:id="formula_6">α, α ′ := a | ¬α | α ∨ α ′ | Eβ β, β ′ := ?α | step | step * | (step/?α) * | β/β ′ | β ∨ β ′ where step ∈ {≺ ch , ≺ − ch , ≺ ns , ≺ − ns }.</formula><p>Given a tree T = (D, λ), the semantics of a node formula is a set of nodes [[α]] T ⊆ D, and the semantics of a path formula is a binary relation <ref type="bibr">[[β]</ref>] T ⊆ D×D given by the following rules. We use R * to denote the reflexive-transitive closure of the relation R, and π 1 (R) to denote its first projection. The semantics is formally defined as follow:</p><formula xml:id="formula_7">[[a]] T = {s ∈ D | λ(s) = a} [[?α]] T = {(s, s) | s ∈ [[α]] T } [[¬α]] T = D − [[α]] T [[step]] T = {(s, s ′ ) | s, s ′ ∈ D and (s, s ′ ) ∈ step} [[α ∨ α ′ ]] T = [[α]] T ∪ [[α ′ ]] T [[β ∨ β ′ ]] T = [[β]] T ∪ [[β ′ ]] T [[Eβ]] T = π 1 ([[β]] T ) [[step * ]] T = [[step]] * T [[β/β ′ ]] T = [[β]] T • [[β ′ ]] T [[(step/?α) * ]] T = [[(step/?α)]] * T</formula><p>CXPath node formulae α define unary queries: such a query selects the set [[α]] T from a tree T . It is known that these capture precisely unary FO queries on trees <ref type="bibr" target="#b18">[19]</ref>. Hence, they can be translated into query automata, although the standard translation from FO into automata necessarily involves non-elementary blowup. The following was shown in <ref type="bibr" target="#b14">[15]</ref>: Theorem 1. Every CXPath node formula α can be translated, in exponential time, into an equivalent single-run query automaton (of exponential size).</p><p>The translation went in two steps:</p><p>1. First, CXPath node formulae were translated, in single-exponential time, into formulae of a temporal logic TL tree . Those formulae could be of size exponential in the size of the original CXPath formula. 2. TL tree formulae were translated, again in single-exponential time, into exponential-size QAs.</p><p>While this appears to give a double-exponential algorithm, a careful analysis of the translations showed that it did not occur, i.e., the state-space of the resulting QA was always single-exponential in the size of the original CXPath formula.</p><p>Still, as we explained before, it is undesirable to have such a two-stage translation, as it practically eliminates any chance of adapting algorithmic techniques that have been developed for the LTL-to-automata translation. So now we provide a direct translation for CXPath to automata.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">CXPath-to-query automata translation</head><p>The direct translation from CXPath α queries into single-run QAs (Q, δ, F, Q s ) is done in the following steps:</p><p>1. First, we define the set sub(α) of subformulae of α (analog of the Fischer-Ladner closure). 2. Then we let the set Q be a subset of 2 sub(α) satisfying certain properties. 3. Then we define the set of final states. 4. Selection states are those states q ⊆ sub(α) that contain α. 5. Finally, we define the transition function: this is the most involved part of the translation.</p><p>Intuitively the automaton is such that there is exactly one accepting run for each tree which labels each node by the sets of all subformula from sub(α) it satisfies.</p><p>Subformulae of a CXP formula As standard in translations from logic to automata, we push all the negations down the formula in a way that they are all in front of either an atom (a) or a path formula (Eβ), so we assume all formulae are in such a form (we push negations inside subformulae as well).</p><p>We define, for a given node formula α, its subformulae sub(α) as follows:</p><formula xml:id="formula_8">sub(a) = {a} sub(α ∧ α ′ ) = {α ∧ α ′ } ∪ sub(α) ∪ sub(α ′ ) sub(¬α) = {¬α} ∪ sub(α) sub(α ∨ α ′ ) = {α ∨ α ′ } ∪ sub(α) ∪ sub(α ′ ) sub(step) = {step} sub(β ∨ β ′ ) = {β ∨ β ′ } ∪ sub(β) ∪ sub(β ′ ) sub(step * ) = {step * } sub(β/β ′ ) = {β/β ′ } ∪ sub(β) ∪ sub(β ′ ) sub(?α) = {?α} ∪ sub(α) sub((step/?α) * ) = {(step/?α) * } ∪ sub(α) sub(Eβ) = {Eβ} ∪ sub(β)</formula><p>In the following, we refer to step, step * , and (step/?α) * as navigational connectives.</p><p>States Now fix a node formula α 0 . The set of states of the query automaton QA α0 is Q ⊂ 2 sub(α0) where each q ∈ Q satisfies the following conditions for each formula γ ∈ sub(α 0 ):</p><formula xml:id="formula_9">-If γ = α 1 ∨ α 2 , then γ ∈ q iff either α 1 ∈ q or α 2 ∈ q. -If γ = α 1 ∧ α 2 , then γ ∈ q iff both α 1 ∈ q and α 2 ∈ q. -If γ = β 1 ∨ β 2 , then γ ∈ q iff either β 1 ∈ q or β 2 ∈ q. -If γ =?α, then γ ∈ q iff α ∈ q. -If γ = Eβ, then γ ∈ q iff β ∈ q. -If γ = β 1 /β 2 , where β 1 does not contain any navigational connectives, then γ ∈ q iff β 1 ∈ q and β 2 ∈ q. -If γ is a node formula of the form a or Eβ, then γ ∈ q iff ¬γ / ∈ q. -If γ = β 2 /β 1 where β 2 is step * or (step/?α) * , then β 1 ∈ q implies β 2 /β 1 ∈ q. -If γ = step * or γ = (step/?α) * then γ ∈ q.</formula><p>-Each state q contains exactly one formula of the form a.</p><p>Final states The set of final states F ⊂ Q is the set of states q such that for any step ∈ {≺ ns , ≺ − ns , ≺ − ch }: -q does not contain any formula of the form step or step/β.</p><p>-If q contains a formula of the form β ′ /β, where β ′ is of the form step * or (step/?α) * then q also contains β.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Selecting states</head><p>The selecting states Q s are simply the states containing α 0 .</p><p>In general, we denote by Q u the set of states containing a certain path or node formula u.</p><formula xml:id="formula_10">Thus Q s = Q α0 .</formula><p>Transition function The transition function δ is defined as follows, for each q ∈ Q and a ∈ Σ :</p><formula xml:id="formula_11">δ(q, a) = L ns ∩ L up (q) ∩ L down (q, a)</formula><p>where the languages L down (q, a), L up (q), and L ns are to be defined shortly.</p><p>Intuitively the language L ns checks horizontal constraints. It is independent from q and a and describes valid sequences of siblings w.r.t. the formula α 0 . The language L up (q) is used to check upward conditions. It ensures that every child of a node assigned to q is assigned to a state such that its upward formula are compatible with q. Finally, the language L down (q, a) is used to check local and downward constraints. For each node labeled by a and assigned to a state q it ensures that the labelling of its children is compatible with the downward formula of q. It also checks that a is compatible with q.</p><p>The language L ns of horizontal conditions L ns is the set of words from q 0 q 1 • • • q n−1 q n for n ∈ N which respects the following constraints.</p><p>-Conditions for the leftmost state q 0 • q 0 does not contain any formula of the form</p><formula xml:id="formula_12">≺ − ns /β • From each formula β ′ /β ∈ sub(α 0 ) where β ′ is either ≺ − * ns or (≺ − ns /?α) * , β ∈ q 0 iff β ′ /β ∈ q 0 .</formula><p>-Conditions for the rightmost state q n • q n does not contain any formula of the form ≺ ns /β • From each formula β ′ /β ∈ sub(α 0 ) where β ′ is either ≺ * ns or (≺ ns /?α) * , β ∈ q n iff β ′ /β ∈ q n . -Conditions for two consecutive states q i , q i+1 .</p><p>• For any path formula</p><formula xml:id="formula_13">β in q i * If β =≺ ns /β ′ then β ′ ∈ q i+1 . * If β =≺ * ns /β ′ then either β ′ ∈ q i or ≺ * ns /β ′ ∈ q i+1 . * If β = (≺ ns /?α) * /β ′ then either β ′ ∈ q i or (≺ ns /?α) * /β ′ ∈ q i+1</formula><p>and α ∈ q i+1 . • For any path formula</p><formula xml:id="formula_14">β in q i+1 * If β =≺ − ns /β ′ then β ′ ∈ q i . * If β =≺ − * ns /β ′ then either β ′ ∈ q i+1 or ≺ − * ns /β ′ ∈ q i . * If β = (≺ −</formula><p>ns /?α) * /β ′ then either β ′ ∈ q i+1 or (≺ − ns /?α) * /β ′ ∈ q i and α ∈ q i . • The set sub(α 0 ) − q i does not contains any formula of the form ≺ ns or ≺ * ns or (≺ ns /?α) * .</p><formula xml:id="formula_15">• For any formula β in sub(α 0 ) − q i * If β =≺ ns /β ′ then β ′ / ∈ q i+1 . * If β =≺ * ns /β ′ then β ′ / ∈ q i and ≺ * ns /β ′ / ∈ q i+1 . * If β = (≺ ns /?α) * /β ′ then β ′ /</formula><p>∈ q i and either (≺ ns /?α) * /β ′ / ∈ q i+1 or α / ∈ q i+1 . • The set sub(α 0 ) − q i+1 does not contains any formula of the form ≺ − ns or ≺ − * ns or (≺ − ns /?α) * .</p><formula xml:id="formula_16">• For any formula β in sub(α 0 ) − q i+1 * If β =≺ − ns /β ′ then β ′ / ∈ q i . * If β =≺ − * ns /β ′ then β ′ / ∈ q i+1 and ≺ − * ns /β ′ / ∈ q i . * If β = (≺ −</formula><p>ns /?α) * /β ′ then β ′ / ∈ q i+1 and either (≺ − ns /?α) * /β ′ / ∈ q i or α / ∈ q i .</p><p>It is easy to build a DFA that checks all the conditions and thus recognises L ns .</p><p>The language L up (q) of upward conditions We define L up (q) = Q up (q) * , where Q up (q) is the set of states that are legal children of q wrt formulae of the form β or β/β ′ where β is ≺ − ch , ≺ − * ch or (≺ − ch /?α) * . Formally, a state q ′ belongs to Q up (q) if it satisfies the following conditions:</p><formula xml:id="formula_17">-For each path formula β in q ′ • If β =≺ − ch /β ′ then β ′ ∈ q. • If β =≺ − * ch /β ′ then either β ′ ∈ q ′ or ≺ − * ch /β ′ ∈ q. • If β = (≺ − ch /?α) * /β ′ then either β ′ ∈ q ′ or (≺ − ch /?α) * /β ′ ∈ q and α ∈ q. -The set sub(α 0 ) − q ′ does not contains any formula of the form ≺ − ch or ≺ − * ch or (≺ − ch /?α) * . -For each path formula β in sub(α 0 ) − q ′ • If β =≺ − ch /β ′ then β ′ / ∈ q. • If β =≺ − * ch /β ′ then β ′ / ∈ q ′ and ≺ − * ch /β ′ / ∈ q. • If β = (≺ − ch /?α) * /β ′ then β ′ / ∈ q ′ and either (≺ − ch /?α) * /β ′ / ∈ q or α / ∈ q.</formula><p>The language L down (q, a) of local and downward conditions Let sub down (α 0 ) be is the set of formulae from sub(α 0 ) of the form either β or β/β ′ where β is ≺ ch , ≺ * ch or (≺ ch /?α) * . We define L down (q, a) = L(a, q, a)∩ u∈sub down (α0) L(u, q, a) where each L(u, q, a) is defined as follows:</p><formula xml:id="formula_18">-Propositional letters • L(a, q, a) = Q * if a ∈ q and ∅ otherwise. -Path conditions when u ∈ q • If u =≺ ch then L(u, q, a) = Q + . • If u =≺ * ch or u = (≺ ch /?α) * then L(u, q, a) = Q * . • If u =≺ ch /β ′ then L(u, q, a) = Q * Q β ′ Q * . • If u =≺ * ch /β ′ then either β ′ ∈ q or L(u, q, a) = Q * Q ≺ * ch /β ′ Q * . • If u = (≺ ch /?α) * /β ′ then either β ′ ∈ q or L(u, q, a) = Q * (Q (≺ ch /?α) * /β ′ ∩ Q α )Q * . -Path conditions when u / ∈ q • If u =≺ ch then L(u, q, a) = ǫ. • If u =≺ * ch or u = (≺ ch /?α) * then L(u, q, a) = ∅. • If u =≺ ch /β ′ then L(u, q, a) = Q * Q β ′ Q * . • If u =≺ * ch /β ′ then either β ′ ∈ q and L(u, q, a) = ∅, or β ′ / ∈ q and L(u, q, a) = Q * Q ≺ * ch /β ′ Q * . • If u = (≺ ch /?α) * /β ′ then either β ′ ∈ q and L(u, q, a) = ∅, or β ′ / ∈ q and L(u, q, a) = Q * (Q (≺ ch /?α) * /β ′ ∩ Q α )Q * .</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Correctness of the construction</head><p>In this section, we prove that the correctness of our construction. Theorem 2. Let α 0 be a CXPath node formula.</p><p>1. The automaton QA α0 is a single-run query automaton such that [[α 0 ]] T = QA α0 (T ) for every tree T .</p><p>2. The automaton QA α0 is of size exponential in the size of α 0 and can be constructed in single-exponential time</p><p>The second point of the theorem follows directly from the construction given in the previous section. The first point of Theorem 2 follows from two propositions, presented below.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Consistency and Maximality</head><p>We show that an accepting run of the automaton labels each node of the input tree by a state which represents exactly all subformulae of the original formula which are true at the node. As an immediate corollary, the automaton has at most one accepting run per tree, and that those accepting runs select the same nodes as the CXPath formula.</p><p>First, we show that each accepting run of the automaton is both consistent and maximal in the following sense. Recall that our trees are of the form T = (D, λ), where D is the domain, and λ is the labelling function. Throughout the section, we fix a node CXPath formula α 0 . Definition 1 (Consistency). Let ρ be a labelling function D → 2 sub(α0) , for a given tree T (D, λ) and a given node formula α 0 . We say that ρ is consistent if, for each node s ∈ D, the following is true:</p><p>-for each node formula α ∈ ρ(s), we have s ∈ [[α]] T ; -for each path formula β ∈ ρ(s), there is at least one pair (s, s ′ ) in [[β]] T . Definition 2 (Maximality). Let ρ be a labelling function D → 2 sub(α0) , for a given tree T (D, λ) and a given node formula α 0 . We say that ρ is maximal if, for each node s ∈ D, the following is true:</p><p>-for each node formula α ∈ sub(α 0 ), if s ∈ [[α]] T , then α ∈ ρ(s); -for each path formula β ∈ sub(α 0 ), if [[β]] T contains at least one pair of the form (s, s ′ ), then β ∈ ρ(s).</p><p>Proposition 2 (Consistency and maximality). If ρ is an accepting run of QA α0 on a given tree T and for a given node formula α 0 , then ρ is both consistent and maximal.</p></div>		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Acknowledgements Most of this work was done while all three authors were at the University of Edinburgh, supported by EPSRC grant G049165 and FET-Open Project FoX, grant agreement 233599.</p></div>
			</div>

			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>This proposition is proved by a mutual induction on the structure of node and path formulae occurring in sub(α 0 ). We present a few sample cases below; full details are in the appendix.</p><p>Let s be a node of the tree, a its label, α a node formula, and β a path formula. We suppose, in the cases of consistency, that both α and β are in ρ(s), and in the cases of maximality, that both α and β are true at s. In the following we denote by basic constraints, the constraints given in the definition of the states of the automaton in Section 4.</p><p>-Consistency: some base cases.</p><p>• If α = a ′ then a ′ = a so α is true at s.(Otherwise, a / ∈ ρ(s) as each states contains at most one propositional letter so L(a, ρ(s), a) is empty, and thus ρ cannot be an accepting run.) • If β =≺ ch then L(≺ ch , ρ(s), a) = Q + , thus s has a least one child, so β is true at s.</p><p>ch then the only case where β might not be true is at the root. But this cannot happen, as any state containing ≺ − ch cannot be final. So β is true at s. -Maximality: some base cases.</p><p>• If α = a ′ then a ′ = a, because α is true at s. If α / ∈ ρ(s) then L(a, ρ(s), a) = ∅ and ρ cannot be accepting. Thus, α ∈ ρ(s).</p><p>ch then s is not the root, which implies that s has a parent s ′ , labelled by the state ρ(s ′ ). Then, we have ρ(s) ∈ L up (ρ(s ′ )), and all states in L up contain β. Thus, β ∈ ρ(s).</p><p>-Consistency: some induction cases.</p><p>• If α = ¬α ′ then, because of basic constraints, α ′ / ∈ ρ(s). By the induction hypothesis for maximality, α ′ cannot be true at s. So α is true at s.</p><p>• If α = α 1 ∨ α 2 then, because of basic constraints, either α 1 or α 2 is in ρ(s). Then, by the induction hypothesis for consistency, either α 1 or α 2 is true at s. So α is true at s. • If α = Eβ then, because of basic constraints, β ∈ ρ(s). By the induction hypothesis for consistency, β is true at s, i.e. contains at least one element when evaluated starting from s. So α is true at s. • If β =?α then, because of basic constraints, ?α ∈ ρ(s). By the induction hypothesis for consistency, α is true at s. So the interpretation of β contains at least (s, s), hence β is satisfied at s. -Maximality: some induction cases.</p><p>• If α = ¬α ′ then, α ′ cannot be true at s. By the induction hypothesis for consistency, this means that α ′ / ∈ ρ(s). Then, because of basic constraints, α ∈ ρ(s).</p><p>• If α = α 1 ∨ α 2 then either α 1 or α 2 is true at s. By the induction hypothesis for maximality, either α 1 or α 2 is in ρ(s). So, because of basic constraints, α ∈ ρ(s). • If α = Eβ then the interpretation of β contains (s, s ′ ) for some s ′ , which means that β is true at s. By the induction hypothesis, β ∈ ρ(s). So, because of basic constraints, α ∈ ρ(s). • If β =?α then the interpretation of β contains (s, s) which means that α is true at s. By the induction hypothesis, α ∈ ρ(s). So, because of basic constraints, β ∈ ρ(s).</p><p>Accepting Runs We have proved so far that the accepting runs of the automaton were consistent and maximal labellings, which means that the automaton accepts at most the same trees than the original CXPath formula. We now prove that each consistent and maximal labelling of a tree is an accepting run of the automaton.</p><p>Proposition 3 (Accepting Runs). Let ρ be a maximal and consistent labelling of the nodes of a given tree T with respect to a given formula α 0 . Then ρ is an accepting run of QA α0 .</p><p>This shows that the QA we constructed has indeed at most one accepting run per tree, and that during this run, a node gets labelled by a state which contains α 0 iff α 0 is true at that node. Hence, the automaton selects all the nodes which are also selected by α 0 , and this concludes the proof of Theorem 2.</p></div>			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Reasoning about XML update constraints</title>
		<author>
			<persName><forename type="first">S</forename><surname>Abiteboul</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Cautis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Milo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">PODS&apos;07</title>
				<imprint>
			<biblScope unit="page" from="195" to="204" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Consistency of XML specifications</title>
		<author>
			<persName><forename type="first">M</forename><surname>Arenas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Fan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Libkin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Inconsistency Tolerance</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page" from="15" to="41" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">XPath satisfiability in the presence of DTDs</title>
		<author>
			<persName><forename type="first">M</forename><surname>Benedikt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Fan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Geerts</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">PODS&apos;05</title>
				<imprint>
			<biblScope unit="page" from="25" to="36" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Two-variable logic on data trees and XML reasoning</title>
		<author>
			<persName><forename type="first">M</forename><surname>Bojanczyk</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>David</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Muscholl</surname></persName>
		</author>
		<author>
			<persName><surname>Th</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Schwentick</surname></persName>
		</author>
		<author>
			<persName><surname>Segoufin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">PODS&apos;06</title>
				<imprint>
			<biblScope unit="page" from="10" to="19" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Regular XPath: constraints, query containment and view-based answering for XML documents</title>
		<author>
			<persName><forename type="first">D</forename><surname>Calvanese</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>De Giacomo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Lenzerini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">Y</forename><surname>Vardi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Logic in Databases</title>
				<imprint>
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m" type="main">Model Checking</title>
		<author>
			<persName><forename type="first">E</forename><surname>Clarke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Grumberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Peled</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1999">1999</date>
			<publisher>MIT Press</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">Querying streaming XML using visibly pushdown automata</title>
		<author>
			<persName><forename type="first">R</forename><surname>Clark</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2008">2008</date>
		</imprint>
		<respStmt>
			<orgName>University of Illinois</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Technical Report</note>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Improved automata generation for linear temporal logic</title>
		<author>
			<persName><forename type="first">M</forename><surname>Daniele</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Giunchiglia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">Y</forename><surname>Vardi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">CAV&apos;99</title>
				<imprint>
			<biblScope unit="page" from="249" to="260" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Query evaluation on compressed trees</title>
		<author>
			<persName><forename type="first">M</forename><surname>Frick</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Grohe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Koch</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">LICS&apos;03</title>
				<imprint>
			<biblScope unit="page" from="188" to="197" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">A system for the static analysis of XPath</title>
		<author>
			<persName><forename type="first">P</forename><surname>Genevés</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Layaida</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM TOIS</title>
		<imprint>
			<biblScope unit="volume">24</biblScope>
			<biblScope unit="page" from="475" to="502" />
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Efficient static analysis of XML paths and types</title>
		<author>
			<persName><forename type="first">P</forename><surname>Genevés</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Layaida</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Schmitt</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ACM SIGPLAN Conf. on Programming Language Design and Implementation</title>
				<imprint>
			<date type="published" when="2007">2007</date>
			<biblScope unit="page" from="342" to="351" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Simple on-the-fly automatic verification of linear temporal logic</title>
		<author>
			<persName><forename type="first">R</forename><surname>Gerth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Peled</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Vardi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Wolper</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">PSTV</title>
		<imprint>
			<biblScope unit="page" from="3" to="18" />
			<date type="published" when="1995">1995</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Suciu Stream processing of XPath queries with predicates</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">K</forename><surname>Gupta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SIGMOD 2003</title>
				<imprint>
			<biblScope unit="page" from="419" to="430" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Logics for unranked trees: an overview</title>
		<author>
			<persName><forename type="first">L</forename><surname>Libkin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ICALP&apos;05</title>
				<imprint>
			<biblScope unit="page" from="35" to="50" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Reasoning about XML with temporal logics and automata</title>
		<author>
			<persName><forename type="first">L</forename><surname>Libkin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Sirangelo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Applied Logic</title>
		<imprint>
			<biblScope unit="volume">8</biblScope>
			<biblScope unit="page" from="210" to="232" />
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Exact XML type checking in polynomial time</title>
		<author>
			<persName><forename type="first">S</forename><surname>Maneth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Perst</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Seidl</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ICDT 2007</title>
				<imprint>
			<biblScope unit="page" from="254" to="268" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Simple off the shelf abstractions for XML schema</title>
		<author>
			<persName><forename type="first">W</forename><surname>Martens</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Neven</surname></persName>
		</author>
		<author>
			<persName><surname>Th</surname></persName>
		</author>
		<author>
			<persName><surname>Schwentick</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">SIGMOD Record</title>
		<imprint>
			<biblScope unit="volume">36</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="15" to="22" />
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">XPath with conditional axis relations</title>
		<author>
			<persName><forename type="first">M</forename><surname>Marx</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">EDBT</title>
				<imprint>
			<date type="published" when="2004">2004</date>
			<biblScope unit="page" from="477" to="494" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Conditional XPath</title>
		<author>
			<persName><forename type="first">M</forename><surname>Marx</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM TODS</title>
		<imprint>
			<biblScope unit="volume">30</biblScope>
			<biblScope unit="page" from="929" to="959" />
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<monogr>
		<title level="m" type="main">Design and Analysis of Query Languages for Structured Documents</title>
		<author>
			<persName><forename type="first">F</forename><surname>Neven</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1999">1999</date>
		</imprint>
		<respStmt>
			<orgName>U. Limburg</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">PhD Thesis</note>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Automata, logic, and XML</title>
		<author>
			<persName><forename type="first">F</forename><surname>Neven</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">CSL</title>
		<imprint>
			<biblScope unit="page" from="2" to="26" />
			<date type="published" when="2002">2002</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Query automata over finite trees</title>
		<author>
			<persName><forename type="first">F</forename><surname>Neven</surname></persName>
		</author>
		<author>
			<persName><surname>Th</surname></persName>
		</author>
		<author>
			<persName><surname>Schwentick</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">TCS</title>
		<imprint>
			<biblScope unit="volume">275</biblScope>
			<biblScope unit="page" from="633" to="674" />
			<date type="published" when="2002">2002</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Expressiveness of structured document query languages based on attribute grammars</title>
		<author>
			<persName><forename type="first">F</forename><surname>Neven</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Van Den Bussche</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">J. ACM</title>
		<imprint>
			<biblScope unit="volume">49</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="56" to="100" />
			<date type="published" when="2002">2002</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">N-ary queries by tree automata</title>
		<author>
			<persName><forename type="first">J</forename><surname>Niehren</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Planque</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J.-M</forename><surname>Talbot</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Tison</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">DBPL 2005</title>
				<imprint>
			<biblScope unit="page" from="217" to="231" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Expressive completeness of temporal logic of trees</title>
		<author>
			<persName><forename type="first">B.-H</forename><surname>Schlingloff</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Applied Non-Classical Logics</title>
		<imprint>
			<biblScope unit="volume">2</biblScope>
			<biblScope unit="page" from="157" to="180" />
			<date type="published" when="1992">1992</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">XPath query containment</title>
		<author>
			<persName><surname>Th</surname></persName>
		</author>
		<author>
			<persName><surname>Schwentick</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">SIGMOD Record</title>
		<imprint>
			<biblScope unit="volume">33</biblScope>
			<biblScope unit="page" from="101" to="109" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Automata for XML -a survey</title>
		<author>
			<persName><surname>Th</surname></persName>
		</author>
		<author>
			<persName><surname>Schwentick</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">JCSS</title>
		<imprint>
			<biblScope unit="volume">73</biblScope>
			<biblScope unit="page" from="289" to="315" />
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Languages, automata, and logic</title>
		<author>
			<persName><forename type="first">W</forename><surname>Thomas</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Handbook of Formal Languages</title>
				<imprint>
			<biblScope unit="volume">III</biblScope>
			<biblScope unit="page" from="389" to="455" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">An automata-theoretic approach to linear temporal logic</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">Y</forename><surname>Vardi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Banff Higher Order Workshop</title>
				<imprint>
			<date type="published" when="1996">1996</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<analytic>
		<title level="a" type="main">Reasoning about infinite computations</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">Y</forename><surname>Vardi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Wolper</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Inf.&amp; Comput</title>
		<imprint>
			<biblScope unit="volume">115</biblScope>
			<biblScope unit="page" from="1" to="37" />
			<date type="published" when="1994">1994</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
