0 Prolog
↳1 CutEliminatorProof (⇒, 0 ms)
↳2 Prolog
↳3 UndefinedPredicateHandlerProof (⇒, 0 ms)
↳4 Prolog
↳5 PrologToPiTRSProof (⇒, 0 ms)
↳6 PiTRS
↳7 DependencyPairsProof (⇔, 78 ms)
↳8 PiDP
↳9 DependencyGraphProof (⇔, 0 ms)
↳10 AND
↳11 PiDP
↳12 UsableRulesProof (⇔, 0 ms)
↳13 PiDP
↳14 PiDPToQDPProof (⇒, 0 ms)
↳15 QDP
↳16 QDPSizeChangeProof (⇔, 0 ms)
↳17 YES
↳18 PiDP
↳19 UsableRulesProof (⇔, 0 ms)
↳20 PiDP
↳21 PiDPToQDPProof (⇒, 0 ms)
↳22 QDP
↳23 QDPSizeChangeProof (⇔, 0 ms)
↳24 YES
↳25 PiDP
↳26 PiDPToQDPProof (⇒, 0 ms)
↳27 QDP
↳28 QDPOrderProof (⇔, 115 ms)
↳29 QDP
↳30 DependencyGraphProof (⇔, 0 ms)
↳31 TRUE
qsort_in_ga(.(X, L), R) → U1_ga(X, L, R, partition_in_ggaa(L, X, L1, L2))
partition_in_ggaa([], X1, [], []) → partition_out_ggaa([], X1, [], [])
partition_in_ggaa(.(E, R), C, .(E, Left1), Right) → U5_ggaa(E, R, C, Left1, Right, <_in_gg(E, C))
<_in_gg(X0, X1) → <_out_gg(X0, X1)
U5_ggaa(E, R, C, Left1, Right, <_out_gg(E, C)) → U6_ggaa(E, R, C, Left1, Right, partition_in_ggaa(R, C, Left1, Right))
partition_in_ggaa(.(E, R), C, Left, .(E, Right1)) → U7_ggaa(E, R, C, Left, Right1, partition_in_ggaa(R, C, Left, Right1))
U7_ggaa(E, R, C, Left, Right1, partition_out_ggaa(R, C, Left, Right1)) → partition_out_ggaa(.(E, R), C, Left, .(E, Right1))
U6_ggaa(E, R, C, Left1, Right, partition_out_ggaa(R, C, Left1, Right)) → partition_out_ggaa(.(E, R), C, .(E, Left1), Right)
U1_ga(X, L, R, partition_out_ggaa(L, X, L1, L2)) → U2_ga(X, L, R, L1, qsort_in_ga(L2, R2))
qsort_in_ga([], []) → qsort_out_ga([], [])
U2_ga(X, L, R, L1, qsort_out_ga(L2, R2)) → U3_ga(X, L, R, R2, qsort_in_ga(L1, R1))
U3_ga(X, L, R, R2, qsort_out_ga(L1, R1)) → U4_ga(X, L, R, append_in_gga(R1, .(X, R2), R))
append_in_gga([], X, X) → append_out_gga([], X, X)
append_in_gga(.(H, X), Y, .(H, Z)) → U8_gga(H, X, Y, Z, append_in_gga(X, Y, Z))
U8_gga(H, X, Y, Z, append_out_gga(X, Y, Z)) → append_out_gga(.(H, X), Y, .(H, Z))
U4_ga(X, L, R, append_out_gga(R1, .(X, R2), R)) → qsort_out_ga(.(X, L), R)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
qsort_in_ga(.(X, L), R) → U1_ga(X, L, R, partition_in_ggaa(L, X, L1, L2))
partition_in_ggaa([], X1, [], []) → partition_out_ggaa([], X1, [], [])
partition_in_ggaa(.(E, R), C, .(E, Left1), Right) → U5_ggaa(E, R, C, Left1, Right, <_in_gg(E, C))
<_in_gg(X0, X1) → <_out_gg(X0, X1)
U5_ggaa(E, R, C, Left1, Right, <_out_gg(E, C)) → U6_ggaa(E, R, C, Left1, Right, partition_in_ggaa(R, C, Left1, Right))
partition_in_ggaa(.(E, R), C, Left, .(E, Right1)) → U7_ggaa(E, R, C, Left, Right1, partition_in_ggaa(R, C, Left, Right1))
U7_ggaa(E, R, C, Left, Right1, partition_out_ggaa(R, C, Left, Right1)) → partition_out_ggaa(.(E, R), C, Left, .(E, Right1))
U6_ggaa(E, R, C, Left1, Right, partition_out_ggaa(R, C, Left1, Right)) → partition_out_ggaa(.(E, R), C, .(E, Left1), Right)
U1_ga(X, L, R, partition_out_ggaa(L, X, L1, L2)) → U2_ga(X, L, R, L1, qsort_in_ga(L2, R2))
qsort_in_ga([], []) → qsort_out_ga([], [])
U2_ga(X, L, R, L1, qsort_out_ga(L2, R2)) → U3_ga(X, L, R, R2, qsort_in_ga(L1, R1))
U3_ga(X, L, R, R2, qsort_out_ga(L1, R1)) → U4_ga(X, L, R, append_in_gga(R1, .(X, R2), R))
append_in_gga([], X, X) → append_out_gga([], X, X)
append_in_gga(.(H, X), Y, .(H, Z)) → U8_gga(H, X, Y, Z, append_in_gga(X, Y, Z))
U8_gga(H, X, Y, Z, append_out_gga(X, Y, Z)) → append_out_gga(.(H, X), Y, .(H, Z))
U4_ga(X, L, R, append_out_gga(R1, .(X, R2), R)) → qsort_out_ga(.(X, L), R)
QSORT_IN_GA(.(X, L), R) → U1_GA(X, L, R, partition_in_ggaa(L, X, L1, L2))
QSORT_IN_GA(.(X, L), R) → PARTITION_IN_GGAA(L, X, L1, L2)
PARTITION_IN_GGAA(.(E, R), C, .(E, Left1), Right) → U5_GGAA(E, R, C, Left1, Right, <_in_gg(E, C))
PARTITION_IN_GGAA(.(E, R), C, .(E, Left1), Right) → <_IN_GG(E, C)
U5_GGAA(E, R, C, Left1, Right, <_out_gg(E, C)) → U6_GGAA(E, R, C, Left1, Right, partition_in_ggaa(R, C, Left1, Right))
U5_GGAA(E, R, C, Left1, Right, <_out_gg(E, C)) → PARTITION_IN_GGAA(R, C, Left1, Right)
PARTITION_IN_GGAA(.(E, R), C, Left, .(E, Right1)) → U7_GGAA(E, R, C, Left, Right1, partition_in_ggaa(R, C, Left, Right1))
PARTITION_IN_GGAA(.(E, R), C, Left, .(E, Right1)) → PARTITION_IN_GGAA(R, C, Left, Right1)
U1_GA(X, L, R, partition_out_ggaa(L, X, L1, L2)) → U2_GA(X, L, R, L1, qsort_in_ga(L2, R2))
U1_GA(X, L, R, partition_out_ggaa(L, X, L1, L2)) → QSORT_IN_GA(L2, R2)
U2_GA(X, L, R, L1, qsort_out_ga(L2, R2)) → U3_GA(X, L, R, R2, qsort_in_ga(L1, R1))
U2_GA(X, L, R, L1, qsort_out_ga(L2, R2)) → QSORT_IN_GA(L1, R1)
U3_GA(X, L, R, R2, qsort_out_ga(L1, R1)) → U4_GA(X, L, R, append_in_gga(R1, .(X, R2), R))
U3_GA(X, L, R, R2, qsort_out_ga(L1, R1)) → APPEND_IN_GGA(R1, .(X, R2), R)
APPEND_IN_GGA(.(H, X), Y, .(H, Z)) → U8_GGA(H, X, Y, Z, append_in_gga(X, Y, Z))
APPEND_IN_GGA(.(H, X), Y, .(H, Z)) → APPEND_IN_GGA(X, Y, Z)
qsort_in_ga(.(X, L), R) → U1_ga(X, L, R, partition_in_ggaa(L, X, L1, L2))
partition_in_ggaa([], X1, [], []) → partition_out_ggaa([], X1, [], [])
partition_in_ggaa(.(E, R), C, .(E, Left1), Right) → U5_ggaa(E, R, C, Left1, Right, <_in_gg(E, C))
<_in_gg(X0, X1) → <_out_gg(X0, X1)
U5_ggaa(E, R, C, Left1, Right, <_out_gg(E, C)) → U6_ggaa(E, R, C, Left1, Right, partition_in_ggaa(R, C, Left1, Right))
partition_in_ggaa(.(E, R), C, Left, .(E, Right1)) → U7_ggaa(E, R, C, Left, Right1, partition_in_ggaa(R, C, Left, Right1))
U7_ggaa(E, R, C, Left, Right1, partition_out_ggaa(R, C, Left, Right1)) → partition_out_ggaa(.(E, R), C, Left, .(E, Right1))
U6_ggaa(E, R, C, Left1, Right, partition_out_ggaa(R, C, Left1, Right)) → partition_out_ggaa(.(E, R), C, .(E, Left1), Right)
U1_ga(X, L, R, partition_out_ggaa(L, X, L1, L2)) → U2_ga(X, L, R, L1, qsort_in_ga(L2, R2))
qsort_in_ga([], []) → qsort_out_ga([], [])
U2_ga(X, L, R, L1, qsort_out_ga(L2, R2)) → U3_ga(X, L, R, R2, qsort_in_ga(L1, R1))
U3_ga(X, L, R, R2, qsort_out_ga(L1, R1)) → U4_ga(X, L, R, append_in_gga(R1, .(X, R2), R))
append_in_gga([], X, X) → append_out_gga([], X, X)
append_in_gga(.(H, X), Y, .(H, Z)) → U8_gga(H, X, Y, Z, append_in_gga(X, Y, Z))
U8_gga(H, X, Y, Z, append_out_gga(X, Y, Z)) → append_out_gga(.(H, X), Y, .(H, Z))
U4_ga(X, L, R, append_out_gga(R1, .(X, R2), R)) → qsort_out_ga(.(X, L), R)
QSORT_IN_GA(.(X, L), R) → U1_GA(X, L, R, partition_in_ggaa(L, X, L1, L2))
QSORT_IN_GA(.(X, L), R) → PARTITION_IN_GGAA(L, X, L1, L2)
PARTITION_IN_GGAA(.(E, R), C, .(E, Left1), Right) → U5_GGAA(E, R, C, Left1, Right, <_in_gg(E, C))
PARTITION_IN_GGAA(.(E, R), C, .(E, Left1), Right) → <_IN_GG(E, C)
U5_GGAA(E, R, C, Left1, Right, <_out_gg(E, C)) → U6_GGAA(E, R, C, Left1, Right, partition_in_ggaa(R, C, Left1, Right))
U5_GGAA(E, R, C, Left1, Right, <_out_gg(E, C)) → PARTITION_IN_GGAA(R, C, Left1, Right)
PARTITION_IN_GGAA(.(E, R), C, Left, .(E, Right1)) → U7_GGAA(E, R, C, Left, Right1, partition_in_ggaa(R, C, Left, Right1))
PARTITION_IN_GGAA(.(E, R), C, Left, .(E, Right1)) → PARTITION_IN_GGAA(R, C, Left, Right1)
U1_GA(X, L, R, partition_out_ggaa(L, X, L1, L2)) → U2_GA(X, L, R, L1, qsort_in_ga(L2, R2))
U1_GA(X, L, R, partition_out_ggaa(L, X, L1, L2)) → QSORT_IN_GA(L2, R2)
U2_GA(X, L, R, L1, qsort_out_ga(L2, R2)) → U3_GA(X, L, R, R2, qsort_in_ga(L1, R1))
U2_GA(X, L, R, L1, qsort_out_ga(L2, R2)) → QSORT_IN_GA(L1, R1)
U3_GA(X, L, R, R2, qsort_out_ga(L1, R1)) → U4_GA(X, L, R, append_in_gga(R1, .(X, R2), R))
U3_GA(X, L, R, R2, qsort_out_ga(L1, R1)) → APPEND_IN_GGA(R1, .(X, R2), R)
APPEND_IN_GGA(.(H, X), Y, .(H, Z)) → U8_GGA(H, X, Y, Z, append_in_gga(X, Y, Z))
APPEND_IN_GGA(.(H, X), Y, .(H, Z)) → APPEND_IN_GGA(X, Y, Z)
qsort_in_ga(.(X, L), R) → U1_ga(X, L, R, partition_in_ggaa(L, X, L1, L2))
partition_in_ggaa([], X1, [], []) → partition_out_ggaa([], X1, [], [])
partition_in_ggaa(.(E, R), C, .(E, Left1), Right) → U5_ggaa(E, R, C, Left1, Right, <_in_gg(E, C))
<_in_gg(X0, X1) → <_out_gg(X0, X1)
U5_ggaa(E, R, C, Left1, Right, <_out_gg(E, C)) → U6_ggaa(E, R, C, Left1, Right, partition_in_ggaa(R, C, Left1, Right))
partition_in_ggaa(.(E, R), C, Left, .(E, Right1)) → U7_ggaa(E, R, C, Left, Right1, partition_in_ggaa(R, C, Left, Right1))
U7_ggaa(E, R, C, Left, Right1, partition_out_ggaa(R, C, Left, Right1)) → partition_out_ggaa(.(E, R), C, Left, .(E, Right1))
U6_ggaa(E, R, C, Left1, Right, partition_out_ggaa(R, C, Left1, Right)) → partition_out_ggaa(.(E, R), C, .(E, Left1), Right)
U1_ga(X, L, R, partition_out_ggaa(L, X, L1, L2)) → U2_ga(X, L, R, L1, qsort_in_ga(L2, R2))
qsort_in_ga([], []) → qsort_out_ga([], [])
U2_ga(X, L, R, L1, qsort_out_ga(L2, R2)) → U3_ga(X, L, R, R2, qsort_in_ga(L1, R1))
U3_ga(X, L, R, R2, qsort_out_ga(L1, R1)) → U4_ga(X, L, R, append_in_gga(R1, .(X, R2), R))
append_in_gga([], X, X) → append_out_gga([], X, X)
append_in_gga(.(H, X), Y, .(H, Z)) → U8_gga(H, X, Y, Z, append_in_gga(X, Y, Z))
U8_gga(H, X, Y, Z, append_out_gga(X, Y, Z)) → append_out_gga(.(H, X), Y, .(H, Z))
U4_ga(X, L, R, append_out_gga(R1, .(X, R2), R)) → qsort_out_ga(.(X, L), R)
APPEND_IN_GGA(.(H, X), Y, .(H, Z)) → APPEND_IN_GGA(X, Y, Z)
qsort_in_ga(.(X, L), R) → U1_ga(X, L, R, partition_in_ggaa(L, X, L1, L2))
partition_in_ggaa([], X1, [], []) → partition_out_ggaa([], X1, [], [])
partition_in_ggaa(.(E, R), C, .(E, Left1), Right) → U5_ggaa(E, R, C, Left1, Right, <_in_gg(E, C))
<_in_gg(X0, X1) → <_out_gg(X0, X1)
U5_ggaa(E, R, C, Left1, Right, <_out_gg(E, C)) → U6_ggaa(E, R, C, Left1, Right, partition_in_ggaa(R, C, Left1, Right))
partition_in_ggaa(.(E, R), C, Left, .(E, Right1)) → U7_ggaa(E, R, C, Left, Right1, partition_in_ggaa(R, C, Left, Right1))
U7_ggaa(E, R, C, Left, Right1, partition_out_ggaa(R, C, Left, Right1)) → partition_out_ggaa(.(E, R), C, Left, .(E, Right1))
U6_ggaa(E, R, C, Left1, Right, partition_out_ggaa(R, C, Left1, Right)) → partition_out_ggaa(.(E, R), C, .(E, Left1), Right)
U1_ga(X, L, R, partition_out_ggaa(L, X, L1, L2)) → U2_ga(X, L, R, L1, qsort_in_ga(L2, R2))
qsort_in_ga([], []) → qsort_out_ga([], [])
U2_ga(X, L, R, L1, qsort_out_ga(L2, R2)) → U3_ga(X, L, R, R2, qsort_in_ga(L1, R1))
U3_ga(X, L, R, R2, qsort_out_ga(L1, R1)) → U4_ga(X, L, R, append_in_gga(R1, .(X, R2), R))
append_in_gga([], X, X) → append_out_gga([], X, X)
append_in_gga(.(H, X), Y, .(H, Z)) → U8_gga(H, X, Y, Z, append_in_gga(X, Y, Z))
U8_gga(H, X, Y, Z, append_out_gga(X, Y, Z)) → append_out_gga(.(H, X), Y, .(H, Z))
U4_ga(X, L, R, append_out_gga(R1, .(X, R2), R)) → qsort_out_ga(.(X, L), R)
APPEND_IN_GGA(.(H, X), Y, .(H, Z)) → APPEND_IN_GGA(X, Y, Z)
APPEND_IN_GGA(.(H, X), Y) → APPEND_IN_GGA(X, Y)
From the DPs we obtained the following set of size-change graphs:
U5_GGAA(E, R, C, Left1, Right, <_out_gg(E, C)) → PARTITION_IN_GGAA(R, C, Left1, Right)
PARTITION_IN_GGAA(.(E, R), C, .(E, Left1), Right) → U5_GGAA(E, R, C, Left1, Right, <_in_gg(E, C))
PARTITION_IN_GGAA(.(E, R), C, Left, .(E, Right1)) → PARTITION_IN_GGAA(R, C, Left, Right1)
qsort_in_ga(.(X, L), R) → U1_ga(X, L, R, partition_in_ggaa(L, X, L1, L2))
partition_in_ggaa([], X1, [], []) → partition_out_ggaa([], X1, [], [])
partition_in_ggaa(.(E, R), C, .(E, Left1), Right) → U5_ggaa(E, R, C, Left1, Right, <_in_gg(E, C))
<_in_gg(X0, X1) → <_out_gg(X0, X1)
U5_ggaa(E, R, C, Left1, Right, <_out_gg(E, C)) → U6_ggaa(E, R, C, Left1, Right, partition_in_ggaa(R, C, Left1, Right))
partition_in_ggaa(.(E, R), C, Left, .(E, Right1)) → U7_ggaa(E, R, C, Left, Right1, partition_in_ggaa(R, C, Left, Right1))
U7_ggaa(E, R, C, Left, Right1, partition_out_ggaa(R, C, Left, Right1)) → partition_out_ggaa(.(E, R), C, Left, .(E, Right1))
U6_ggaa(E, R, C, Left1, Right, partition_out_ggaa(R, C, Left1, Right)) → partition_out_ggaa(.(E, R), C, .(E, Left1), Right)
U1_ga(X, L, R, partition_out_ggaa(L, X, L1, L2)) → U2_ga(X, L, R, L1, qsort_in_ga(L2, R2))
qsort_in_ga([], []) → qsort_out_ga([], [])
U2_ga(X, L, R, L1, qsort_out_ga(L2, R2)) → U3_ga(X, L, R, R2, qsort_in_ga(L1, R1))
U3_ga(X, L, R, R2, qsort_out_ga(L1, R1)) → U4_ga(X, L, R, append_in_gga(R1, .(X, R2), R))
append_in_gga([], X, X) → append_out_gga([], X, X)
append_in_gga(.(H, X), Y, .(H, Z)) → U8_gga(H, X, Y, Z, append_in_gga(X, Y, Z))
U8_gga(H, X, Y, Z, append_out_gga(X, Y, Z)) → append_out_gga(.(H, X), Y, .(H, Z))
U4_ga(X, L, R, append_out_gga(R1, .(X, R2), R)) → qsort_out_ga(.(X, L), R)
U5_GGAA(E, R, C, Left1, Right, <_out_gg(E, C)) → PARTITION_IN_GGAA(R, C, Left1, Right)
PARTITION_IN_GGAA(.(E, R), C, .(E, Left1), Right) → U5_GGAA(E, R, C, Left1, Right, <_in_gg(E, C))
PARTITION_IN_GGAA(.(E, R), C, Left, .(E, Right1)) → PARTITION_IN_GGAA(R, C, Left, Right1)
<_in_gg(X0, X1) → <_out_gg(X0, X1)
U5_GGAA(E, R, C, <_out_gg) → PARTITION_IN_GGAA(R, C)
PARTITION_IN_GGAA(.(E, R), C) → U5_GGAA(E, R, C, <_in_gg(E, C))
PARTITION_IN_GGAA(.(E, R), C) → PARTITION_IN_GGAA(R, C)
<_in_gg(X0, X1) → <_out_gg
<_in_gg(x0, x1)
From the DPs we obtained the following set of size-change graphs:
U1_GA(X, L, R, partition_out_ggaa(L, X, L1, L2)) → U2_GA(X, L, R, L1, qsort_in_ga(L2, R2))
U2_GA(X, L, R, L1, qsort_out_ga(L2, R2)) → QSORT_IN_GA(L1, R1)
QSORT_IN_GA(.(X, L), R) → U1_GA(X, L, R, partition_in_ggaa(L, X, L1, L2))
U1_GA(X, L, R, partition_out_ggaa(L, X, L1, L2)) → QSORT_IN_GA(L2, R2)
qsort_in_ga(.(X, L), R) → U1_ga(X, L, R, partition_in_ggaa(L, X, L1, L2))
partition_in_ggaa([], X1, [], []) → partition_out_ggaa([], X1, [], [])
partition_in_ggaa(.(E, R), C, .(E, Left1), Right) → U5_ggaa(E, R, C, Left1, Right, <_in_gg(E, C))
<_in_gg(X0, X1) → <_out_gg(X0, X1)
U5_ggaa(E, R, C, Left1, Right, <_out_gg(E, C)) → U6_ggaa(E, R, C, Left1, Right, partition_in_ggaa(R, C, Left1, Right))
partition_in_ggaa(.(E, R), C, Left, .(E, Right1)) → U7_ggaa(E, R, C, Left, Right1, partition_in_ggaa(R, C, Left, Right1))
U7_ggaa(E, R, C, Left, Right1, partition_out_ggaa(R, C, Left, Right1)) → partition_out_ggaa(.(E, R), C, Left, .(E, Right1))
U6_ggaa(E, R, C, Left1, Right, partition_out_ggaa(R, C, Left1, Right)) → partition_out_ggaa(.(E, R), C, .(E, Left1), Right)
U1_ga(X, L, R, partition_out_ggaa(L, X, L1, L2)) → U2_ga(X, L, R, L1, qsort_in_ga(L2, R2))
qsort_in_ga([], []) → qsort_out_ga([], [])
U2_ga(X, L, R, L1, qsort_out_ga(L2, R2)) → U3_ga(X, L, R, R2, qsort_in_ga(L1, R1))
U3_ga(X, L, R, R2, qsort_out_ga(L1, R1)) → U4_ga(X, L, R, append_in_gga(R1, .(X, R2), R))
append_in_gga([], X, X) → append_out_gga([], X, X)
append_in_gga(.(H, X), Y, .(H, Z)) → U8_gga(H, X, Y, Z, append_in_gga(X, Y, Z))
U8_gga(H, X, Y, Z, append_out_gga(X, Y, Z)) → append_out_gga(.(H, X), Y, .(H, Z))
U4_ga(X, L, R, append_out_gga(R1, .(X, R2), R)) → qsort_out_ga(.(X, L), R)
U1_GA(X, partition_out_ggaa(L1, L2)) → U2_GA(X, L1, qsort_in_ga(L2))
U2_GA(X, L1, qsort_out_ga(R2)) → QSORT_IN_GA(L1)
QSORT_IN_GA(.(X, L)) → U1_GA(X, partition_in_ggaa(L, X))
U1_GA(X, partition_out_ggaa(L1, L2)) → QSORT_IN_GA(L2)
qsort_in_ga(.(X, L)) → U1_ga(X, partition_in_ggaa(L, X))
partition_in_ggaa([], X1) → partition_out_ggaa([], [])
partition_in_ggaa(.(E, R), C) → U5_ggaa(E, R, C, <_in_gg(E, C))
<_in_gg(X0, X1) → <_out_gg
U5_ggaa(E, R, C, <_out_gg) → U6_ggaa(E, partition_in_ggaa(R, C))
partition_in_ggaa(.(E, R), C) → U7_ggaa(E, partition_in_ggaa(R, C))
U7_ggaa(E, partition_out_ggaa(Left, Right1)) → partition_out_ggaa(Left, .(E, Right1))
U6_ggaa(E, partition_out_ggaa(Left1, Right)) → partition_out_ggaa(.(E, Left1), Right)
U1_ga(X, partition_out_ggaa(L1, L2)) → U2_ga(X, L1, qsort_in_ga(L2))
qsort_in_ga([]) → qsort_out_ga([])
U2_ga(X, L1, qsort_out_ga(R2)) → U3_ga(X, R2, qsort_in_ga(L1))
U3_ga(X, R2, qsort_out_ga(R1)) → U4_ga(append_in_gga(R1, .(X, R2)))
append_in_gga([], X) → append_out_gga(X)
append_in_gga(.(H, X), Y) → U8_gga(H, append_in_gga(X, Y))
U8_gga(H, append_out_gga(Z)) → append_out_gga(.(H, Z))
U4_ga(append_out_gga(R)) → qsort_out_ga(R)
qsort_in_ga(x0)
partition_in_ggaa(x0, x1)
<_in_gg(x0, x1)
U5_ggaa(x0, x1, x2, x3)
U7_ggaa(x0, x1)
U6_ggaa(x0, x1)
U1_ga(x0, x1)
U2_ga(x0, x1, x2)
U3_ga(x0, x1, x2)
append_in_gga(x0, x1)
U8_gga(x0, x1)
U4_ga(x0)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
U1_GA(X, partition_out_ggaa(L1, L2)) → U2_GA(X, L1, qsort_in_ga(L2))
U1_GA(X, partition_out_ggaa(L1, L2)) → QSORT_IN_GA(L2)
POL(.(x1, x2)) = 1 + x2
POL(<_in_gg(x1, x2)) = 1
POL(<_out_gg) = 1
POL(QSORT_IN_GA(x1)) = 1 + x1
POL(U1_GA(x1, x2)) = 1 + x2
POL(U1_ga(x1, x2)) = 0
POL(U2_GA(x1, x2, x3)) = 1 + x2
POL(U2_ga(x1, x2, x3)) = 0
POL(U3_ga(x1, x2, x3)) = 0
POL(U4_ga(x1)) = 0
POL(U5_ggaa(x1, x2, x3, x4)) = 1 + x2 + x4
POL(U6_ggaa(x1, x2)) = 1 + x2
POL(U7_ggaa(x1, x2)) = 1 + x2
POL(U8_gga(x1, x2)) = 0
POL([]) = 0
POL(append_in_gga(x1, x2)) = 0
POL(append_out_gga(x1)) = 0
POL(partition_in_ggaa(x1, x2)) = 1 + x1
POL(partition_out_ggaa(x1, x2)) = 1 + x1 + x2
POL(qsort_in_ga(x1)) = 0
POL(qsort_out_ga(x1)) = 0
partition_in_ggaa([], X1) → partition_out_ggaa([], [])
partition_in_ggaa(.(E, R), C) → U5_ggaa(E, R, C, <_in_gg(E, C))
partition_in_ggaa(.(E, R), C) → U7_ggaa(E, partition_in_ggaa(R, C))
<_in_gg(X0, X1) → <_out_gg
U5_ggaa(E, R, C, <_out_gg) → U6_ggaa(E, partition_in_ggaa(R, C))
U6_ggaa(E, partition_out_ggaa(Left1, Right)) → partition_out_ggaa(.(E, Left1), Right)
U7_ggaa(E, partition_out_ggaa(Left, Right1)) → partition_out_ggaa(Left, .(E, Right1))
U2_GA(X, L1, qsort_out_ga(R2)) → QSORT_IN_GA(L1)
QSORT_IN_GA(.(X, L)) → U1_GA(X, partition_in_ggaa(L, X))
qsort_in_ga(.(X, L)) → U1_ga(X, partition_in_ggaa(L, X))
partition_in_ggaa([], X1) → partition_out_ggaa([], [])
partition_in_ggaa(.(E, R), C) → U5_ggaa(E, R, C, <_in_gg(E, C))
<_in_gg(X0, X1) → <_out_gg
U5_ggaa(E, R, C, <_out_gg) → U6_ggaa(E, partition_in_ggaa(R, C))
partition_in_ggaa(.(E, R), C) → U7_ggaa(E, partition_in_ggaa(R, C))
U7_ggaa(E, partition_out_ggaa(Left, Right1)) → partition_out_ggaa(Left, .(E, Right1))
U6_ggaa(E, partition_out_ggaa(Left1, Right)) → partition_out_ggaa(.(E, Left1), Right)
U1_ga(X, partition_out_ggaa(L1, L2)) → U2_ga(X, L1, qsort_in_ga(L2))
qsort_in_ga([]) → qsort_out_ga([])
U2_ga(X, L1, qsort_out_ga(R2)) → U3_ga(X, R2, qsort_in_ga(L1))
U3_ga(X, R2, qsort_out_ga(R1)) → U4_ga(append_in_gga(R1, .(X, R2)))
append_in_gga([], X) → append_out_gga(X)
append_in_gga(.(H, X), Y) → U8_gga(H, append_in_gga(X, Y))
U8_gga(H, append_out_gga(Z)) → append_out_gga(.(H, Z))
U4_ga(append_out_gga(R)) → qsort_out_ga(R)
qsort_in_ga(x0)
partition_in_ggaa(x0, x1)
<_in_gg(x0, x1)
U5_ggaa(x0, x1, x2, x3)
U7_ggaa(x0, x1)
U6_ggaa(x0, x1)
U1_ga(x0, x1)
U2_ga(x0, x1, x2)
U3_ga(x0, x1, x2)
append_in_gga(x0, x1)
U8_gga(x0, x1)
U4_ga(x0)