YES
0 RelTRS
↳1 RelTRStoRelADPProof (⇔, 0 ms)
↳2 RelADPP
↳3 RelADPDepGraphProof (⇔, 0 ms)
↳4 RelADPP
↳5 RelADPDerelatifyingProof (⇔, 0 ms)
↳6 QDP
↳7 MRRProof (⇔, 7 ms)
↳8 QDP
↳9 MRRProof (⇔, 0 ms)
↳10 QDP
↳11 QDPOrderProof (⇔, 21 ms)
↳12 QDP
↳13 QDPOrderProof (⇔, 0 ms)
↳14 QDP
↳15 PisEmptyProof (⇔, 0 ms)
↳16 YES
average(s(x), y) → average(x, s(y))
average(x, s(s(s(y)))) → s(average(s(x), y))
average(0, 0) → 0
average(0, s(0)) → 0
average(0, s(s(0))) → s(0)
rand(x) → rand(s(x))
rand(x) → x
We upgrade the RelTRS problem to an equivalent Relative ADP Problem [IJCAR24].
average(s(x), y) → AVERAGE(x, s(y))
average(x, s(s(s(y)))) → s(AVERAGE(s(x), y))
average(0, 0) → 0
average(0, s(0)) → 0
average(0, s(s(0))) → s(0)
rand(x) → RAND(s(x))
rand(x) → x
We use the relative dependency graph processor [IJCAR24].
The approximation of the Relative Dependency Graph contains:
1 SCC with nodes from P_abs,
0 Lassos,
Result: This relative DT problem is equivalent to 1 subproblem.
average(s(x), y) → AVERAGE(x, s(y))
average(0, s(0)) → 0
average(x, s(s(s(y)))) → s(AVERAGE(s(x), y))
average(0, 0) → 0
average(0, s(s(0))) → s(0)
rand(x) → rand(s(x))
rand(x) → x
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.
AVERAGE(s(x), y) → AVERAGE(x, s(y))
AVERAGE(x, s(s(s(y)))) → AVERAGE(s(x), y)
average(s(x), y) → average(x, s(y))
average(0, s(0)) → 0
average(x, s(s(s(y)))) → s(average(s(x), y))
rand(x) → rand(s(x))
average(0, 0) → 0
rand(x) → x
average(0, s(s(0))) → s(0)
rand(x) → x
POL(0) = 0
POL(AVERAGE(x1, x2)) = x1 + x2
POL(average(x1, x2)) = 2·x1 + x2
POL(rand(x1)) = 2 + x1
POL(s(x1)) = x1
AVERAGE(s(x), y) → AVERAGE(x, s(y))
AVERAGE(x, s(s(s(y)))) → AVERAGE(s(x), y)
average(s(x), y) → average(x, s(y))
average(0, s(0)) → 0
average(x, s(s(s(y)))) → s(average(s(x), y))
rand(x) → rand(s(x))
average(0, 0) → 0
average(0, s(s(0))) → s(0)
average(0, s(0)) → 0
average(0, 0) → 0
average(0, s(s(0))) → s(0)
POL(0) = 2
POL(AVERAGE(x1, x2)) = x1 + x2
POL(average(x1, x2)) = 1 + x1 + x2
POL(rand(x1)) = x1
POL(s(x1)) = x1
AVERAGE(s(x), y) → AVERAGE(x, s(y))
AVERAGE(x, s(s(s(y)))) → AVERAGE(s(x), y)
average(s(x), y) → average(x, s(y))
average(x, s(s(s(y)))) → s(average(s(x), y))
rand(x) → rand(s(x))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
AVERAGE(x, s(s(s(y)))) → AVERAGE(s(x), y)
POL( average(x1, x2) ) = max{0, x1 + x2 - 1} |
POL( s(x1) ) = x1 + 1 |
POL( rand(x1) ) = max{0, -2} |
POL( AVERAGE(x1, x2) ) = max{0, 2x1 + 2x2 - 2} |
average(s(x), y) → average(x, s(y))
average(x, s(s(s(y)))) → s(average(s(x), y))
rand(x) → rand(s(x))
AVERAGE(s(x), y) → AVERAGE(x, s(y))
average(s(x), y) → average(x, s(y))
average(x, s(s(s(y)))) → s(average(s(x), y))
rand(x) → rand(s(x))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
AVERAGE(s(x), y) → AVERAGE(x, s(y))
trivial
s_1=1
average_2=1
rand=1
average(s(x), y) → average(x, s(y))
average(x, s(s(s(y)))) → s(average(s(x), y))
rand(x) → rand(s(x))
average(s(x), y) → average(x, s(y))
average(x, s(s(s(y)))) → s(average(s(x), y))
rand(x) → rand(s(x))