YES
0 RelTRS
↳1 RelTRStoRelADPProof (⇔, 0 ms)
↳2 RelADPP
↳3 RelADPDepGraphProof (⇔, 0 ms)
↳4 AND
↳5 RelADPP
↳6 RelADPDerelatifyingProof (⇔, 0 ms)
↳7 QDP
↳8 MRRProof (⇔, 0 ms)
↳9 QDP
↳10 PisEmptyProof (⇔, 0 ms)
↳11 YES
↳12 RelADPP
↳13 RelADPReductionPairProof (⇔, 29 ms)
↳14 RelADPP
↳15 DAbsisEmptyProof (⇔, 0 ms)
↳16 YES
concat(leaf, y) → y
concat(node(u, v), y) → node(u, concat(v, y))
lessleaves(x, leaf) → false
lessleaves(leaf, node(w, z)) → true
lessleaves(node(u, v), node(w, z)) → lessleaves(concat(u, v), concat(w, z))
lessleaves(node(u, v), node(w, z)) → lessleaves(node(v, u), node(w, z))
lessleaves(node(u, v), node(w, z)) → lessleaves(node(u, v), node(z, w))
We upgrade the RelTRS problem to an equivalent Relative ADP Problem [IJCAR24].
concat(leaf, y) → y
concat(node(u, v), y) → node(u, CONCAT(v, y))
lessleaves(x, leaf) → false
lessleaves(leaf, node(w, z)) → true
lessleaves(node(u, v), node(w, z)) → LESSLEAVES(concat(u, v), concat(w, z))
lessleaves(node(u, v), node(w, z)) → lessleaves(CONCAT(u, v), concat(w, z))
lessleaves(node(u, v), node(w, z)) → lessleaves(concat(u, v), CONCAT(w, z))
lessleaves(node(u, v), node(w, z)) → LESSLEAVES(node(v, u), node(w, z))
lessleaves(node(u, v), node(w, z)) → LESSLEAVES(node(u, v), node(z, w))
We use the relative dependency graph processor [IJCAR24].
The approximation of the Relative Dependency Graph contains:
2 SCCs with nodes from P_abs,
0 Lassos,
Result: This relative DT problem is equivalent to 2 subproblems.
concat(node(u, v), y) → node(u, CONCAT(v, y))
lessleaves(node(u, v), node(w, z)) → lessleaves(node(v, u), node(w, z))
lessleaves(node(u, v), node(w, z)) → lessleaves(node(u, v), node(z, w))
lessleaves(leaf, node(w, z)) → true
concat(leaf, y) → y
lessleaves(node(u, v), node(w, z)) → lessleaves(concat(u, v), concat(w, z))
lessleaves(x, leaf) → false
We use the first derelatifying processor [IJCAR24].
There are no annotations in relative ADPs, so the relative ADP problem can be transformed into a non-relative DP problem.
CONCAT(node(u, v), y) → CONCAT(v, y)
concat(node(u, v), y) → node(u, concat(v, y))
lessleaves(node(u, v), node(w, z)) → lessleaves(node(v, u), node(w, z))
lessleaves(node(u, v), node(w, z)) → lessleaves(node(u, v), node(z, w))
lessleaves(leaf, node(w, z)) → true
concat(leaf, y) → y
lessleaves(node(u, v), node(w, z)) → lessleaves(concat(u, v), concat(w, z))
lessleaves(x, leaf) → false
CONCAT(node(u, v), y) → CONCAT(v, y)
lessleaves(leaf, node(w, z)) → true
concat(leaf, y) → y
lessleaves(node(u, v), node(w, z)) → lessleaves(concat(u, v), concat(w, z))
lessleaves(x, leaf) → false
POL(CONCAT(x1, x2)) = x1 + x2
POL(concat(x1, x2)) = x1 + x2
POL(false) = 2
POL(leaf) = 2
POL(lessleaves(x1, x2)) = x1 + 2·x2
POL(node(x1, x2)) = 1 + x1 + x2
POL(true) = 1
concat(node(u, v), y) → node(u, concat(v, y))
lessleaves(node(u, v), node(w, z)) → lessleaves(node(v, u), node(w, z))
lessleaves(node(u, v), node(w, z)) → lessleaves(node(u, v), node(z, w))
lessleaves(node(u, v), node(w, z)) → LESSLEAVES(concat(u, v), concat(w, z))
lessleaves(node(u, v), node(w, z)) → LESSLEAVES(node(v, u), node(w, z))
lessleaves(node(u, v), node(w, z)) → LESSLEAVES(node(u, v), node(z, w))
concat(node(u, v), y) → node(u, concat(v, y))
lessleaves(leaf, node(w, z)) → true
concat(leaf, y) → y
lessleaves(node(u, v), node(w, z)) → lessleaves(concat(u, v), concat(w, z))
lessleaves(x, leaf) → false
We use the reduction pair processor [IJCAR24].
The following rules can be oriented strictly (l^# > ann(r))
and therefore we can remove all of its annotations in the right-hand side:
Absolute ADPs:
lessleaves(node(u, v), node(w, z)) → LESSLEAVES(concat(u, v), concat(w, z))
concat(node(u, v), y) → node(u, concat(v, y))
lessleaves(leaf, node(w, z)) → true
concat(leaf, y) → y
lessleaves(node(u, v), node(w, z)) → lessleaves(concat(u, v), concat(w, z))
lessleaves(x, leaf) → false
POL(CONCAT(x1, x2)) = 2 + 2·x1·x2
POL(LESSLEAVES(x1, x2)) = x1
POL(concat(x1, x2)) = x1 + x2
POL(false) = 0
POL(leaf) = 0
POL(lessleaves(x1, x2)) = 0
POL(node(x1, x2)) = 1 + x1 + x2
POL(true) = 0
lessleaves(node(u, v), node(w, z)) → LESSLEAVES(node(v, u), node(w, z))
lessleaves(node(u, v), node(w, z)) → LESSLEAVES(node(u, v), node(z, w))
concat(node(u, v), y) → node(u, concat(v, y))
lessleaves(leaf, node(w, z)) → true
concat(leaf, y) → y
lessleaves(node(u, v), node(w, z)) → lessleaves(concat(u, v), concat(w, z))
lessleaves(x, leaf) → false