Database Reference
In-Depth Information
op
1
=
op
(
v,
)
op
2
=
op
(
v,
)
Δ ∪{op
1
,op
2
}→
1
Δ ∪{op
2
}
op ∈{
ren
,
repV
,
repC
,
del
,
ins
,
ins
,
ins
↓
,
insA
}
op
∈{
repN
,
del
}
O1)
op
1
=
op
(
v,
)
op
2
=
repC
(
v,
)
Δ ∪{op
1
,op
2
}→
1
Δ ∪{op
2
}
op ∈{
ins
,
ins
↓
,
ins
}
O2)
op
1
=
op
(
v,
)
op
2
=
op
(
v
,
)
Δ ∪{op
1
,op
2
}→
1
Δ ∪{op
2
}
op
∈{
repN
,
del
},v /
d
v
O3)
op
1
=
op
(
v,
)
op
2
=
repC
(
v
,
)
Δ ∪{op
1
,op
2
}→
1
Δ ∪{op
2
}
v /
¬
d
v
O4)
op
=
ins
r
(
v,
[
T
1
, ..., T
n
])
Δ
=
{
del
(
R
(
T
1
))
, ...,
del
(
R
(
T
n
))
}
Δ ∪{op},Δ
−
1
→
2
Δ, Δ
−
1
∪ Δ
S5)
r ∈{←,→, ↓,,,A}
repN
(
t, γ
(
v
))
t
=[]
ins
↓
(
v, γ
(
v
))
otherwise
Δ ∪{op},Δ
−
1
→
2
Δ, Δ
−
1
∪{op
}
if
op
=
repC
(
v, t
)
op
=
S6)
op
=
repV
(
v, s
)
op
=
repV
(
v, ν
(
v
))
Δ ∪{op},Δ
−
1
→
2
Δ, Δ
−
1
∪{op
}
S7)
op
=
ren
(
v, n
)
op
=
ren
(
v, λ
(
v
))
Δ ∪{op},Δ
−
1
→
2
Δ, Δ
−
1
∪{op
}
S8)
Δ
=
{
insA
(
P
(
v
)
,T
(
v
))
}∪{
del
(
R
(
u
))
| u ∈ p
(
op
)
}
Δ ∪{op},Δ
−
1
→
2
Δ, Δ
−
1
∪ Δ
S9)
t
(
op
)=
v, τ
(
v
)=
a
,o
(
op
)
∈{
repN
,
del
}
Δ
=
{
ins
→
(
LS
(
v
1
)
,
[
T
(
v
1
)
, ..., T
(
v
n
)]
}∪
{
del
(
u
)
| u ∈
i
=1
..n
R
(
p
(
op
i
))
}
Δ ∪{op
1
, ..., op
n
},Δ
−
1
→
2
Δ, Δ
−
1
∪ Δ
{v
1
,...,v
n
}
are the operation targets
,
[
op
1
,...,op
n
] is a removal group
,
τ
(
v
1
)
=
a
,LS
(
v
1
)
=
⊥
G10)
Δ
=
{
ins
(
P
(
v
1
)
,
[
T
(
v
1
)
, ..., T
(
v
n
)]
}∪
{
del
(
u
)
| u ∈
i
=1
..n
R
(
p
(
op
i
))
}
Δ ∪{op
1
, ..., op
n
},Δ
−
1
→
2
Δ, Δ
−
1
∪ Δ
{v
1
, ..., v
n
}
are the operation targets
,
[
op
1
, ..., op
n
] is a removal group
,
τ
(
v
1
)
=
a
,LS
(
v
1
)=
⊥
G11)
Fig. 2.
Inversion rules
The inversion of a PUL
Δ
is computed through the set of inversion rules in Fig. 2. Rules
are categorized in the following three classes:
O Rules that remove overridden operations. Specifically, rule O1 and O3 consider the
case in which a
repN
or a
del
operation on a node
v
overrides other operations
in the subtree rooted at
v
. Rules O2 and O4, are similar in purpose, but consider
the case in which a
repC
is the overriding operation. In all cases, rules in this class
maintain the
repN
,
repC
,or
del
operation and removes the overridden operation.
S Rules that compute the inverses of
ins
,
repC
,
repV
,
ren
, as specified in Table 3.
G Rules that compute the inverse of a removal group. Specifically, rules G10 and G11
produce a deletion for each introduced node and a single insertion for all removed
nodes ensuring the restoration of their original order.
A basic algorithm for computing the inversion consists in the application of the rules
in two stages. When rules in the first stage cannot be applied any more, rules of the
second stage are considered. The rules of class O are considered in the first stage to
remove overridden operations from
Δ
. The rules of classes S and G are considered in
the second stage on a pair of PULs,
Δ
and
Δ
−
1
, the PUL to invert and the inverted
PUL (initially empty). The application of a rule of classes S and G removes one or
more operations from
Δ
and introduces the corresponding inverse operation(s) in
Δ
−
1
.
Example 6.
Consider the PUL
Δ
=
{
del
(5)
,
repV
(6
,
“
VLDB04
”)
,
repN
(7
,<
author
>
X
25
<
/
author
>
24
}
of Example 4. Its inverse, obtained through the application of rules in Fig. 2 is
Δ
−
1
=