0 Prolog
↳1 PrologToPiTRSProof (⇐)
↳2 PiTRS
↳3 DependencyPairsProof (⇔)
↳4 PiDP
↳5 DependencyGraphProof (⇔)
↳6 AND
↳7 PiDP
↳8 UsableRulesProof (⇔)
↳9 PiDP
↳10 PiDPToQDPProof (⇐)
↳11 QDP
↳12 QDPSizeChangeProof (⇔)
↳13 TRUE
↳14 PiDP
↳15 PiDPToQDPProof (⇐)
↳16 QDP
↳17 QDPOrderProof (⇔)
↳18 QDP
↳19 PrologToPiTRSProof (⇐)
↳20 PiTRS
↳21 DependencyPairsProof (⇔)
↳22 PiDP
↳23 DependencyGraphProof (⇔)
↳24 AND
↳25 PiDP
↳26 UsableRulesProof (⇔)
↳27 PiDP
↳28 PiDPToQDPProof (⇐)
↳29 QDP
↳30 QDPSizeChangeProof (⇔)
↳31 TRUE
↳32 PiDP
↳33 PiDPToQDPProof (⇐)
↳34 QDP
↳35 QDPOrderProof (⇔)
↳36 QDP
↳37 DependencyGraphProof (⇔)
↳38 TRUE
rev_in_ga([], []) → rev_out_ga([], [])
rev_in_ga(.(X, XS), .(Y, YS)) → U1_ga(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
rev1_in_gga(X, [], X) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS), Z) → U3_gga(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
U3_gga(X, Y, YS, Z, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
rev2_in_gga(X, [], []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS), ZS) → U4_gga(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_gga(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_gga(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U6_gga(X, Y, YS, ZS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, YS, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
rev_in_ga([], []) → rev_out_ga([], [])
rev_in_ga(.(X, XS), .(Y, YS)) → U1_ga(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
rev1_in_gga(X, [], X) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS), Z) → U3_gga(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
U3_gga(X, Y, YS, Z, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
rev2_in_gga(X, [], []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS), ZS) → U4_gga(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_gga(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_gga(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U6_gga(X, Y, YS, ZS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, YS, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
REV_IN_GA(.(X, XS), .(Y, YS)) → U1_GA(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
REV_IN_GA(.(X, XS), .(Y, YS)) → REV1_IN_GGA(X, XS, Y)
REV1_IN_GGA(X, .(Y, YS), Z) → U3_GGA(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
REV1_IN_GGA(X, .(Y, YS), Z) → REV1_IN_GGA(Y, YS, Z)
U1_GA(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_GA(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
U1_GA(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → REV2_IN_GGA(X, XS, YS)
REV2_IN_GGA(X, .(Y, YS), ZS) → U4_GGA(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
REV2_IN_GGA(X, .(Y, YS), ZS) → REV2_IN_GGA(Y, YS, US)
U4_GGA(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_GGA(X, Y, YS, ZS, rev_in_ga(US, VS))
U4_GGA(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → REV_IN_GA(US, VS)
U5_GGA(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_GGA(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U5_GGA(X, Y, YS, ZS, rev_out_ga(US, VS)) → REV_IN_GA(.(X, VS), ZS)
rev_in_ga([], []) → rev_out_ga([], [])
rev_in_ga(.(X, XS), .(Y, YS)) → U1_ga(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
rev1_in_gga(X, [], X) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS), Z) → U3_gga(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
U3_gga(X, Y, YS, Z, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
rev2_in_gga(X, [], []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS), ZS) → U4_gga(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_gga(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_gga(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U6_gga(X, Y, YS, ZS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, YS, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
REV_IN_GA(.(X, XS), .(Y, YS)) → U1_GA(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
REV_IN_GA(.(X, XS), .(Y, YS)) → REV1_IN_GGA(X, XS, Y)
REV1_IN_GGA(X, .(Y, YS), Z) → U3_GGA(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
REV1_IN_GGA(X, .(Y, YS), Z) → REV1_IN_GGA(Y, YS, Z)
U1_GA(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_GA(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
U1_GA(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → REV2_IN_GGA(X, XS, YS)
REV2_IN_GGA(X, .(Y, YS), ZS) → U4_GGA(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
REV2_IN_GGA(X, .(Y, YS), ZS) → REV2_IN_GGA(Y, YS, US)
U4_GGA(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_GGA(X, Y, YS, ZS, rev_in_ga(US, VS))
U4_GGA(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → REV_IN_GA(US, VS)
U5_GGA(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_GGA(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U5_GGA(X, Y, YS, ZS, rev_out_ga(US, VS)) → REV_IN_GA(.(X, VS), ZS)
rev_in_ga([], []) → rev_out_ga([], [])
rev_in_ga(.(X, XS), .(Y, YS)) → U1_ga(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
rev1_in_gga(X, [], X) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS), Z) → U3_gga(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
U3_gga(X, Y, YS, Z, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
rev2_in_gga(X, [], []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS), ZS) → U4_gga(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_gga(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_gga(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U6_gga(X, Y, YS, ZS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, YS, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
REV1_IN_GGA(X, .(Y, YS), Z) → REV1_IN_GGA(Y, YS, Z)
rev_in_ga([], []) → rev_out_ga([], [])
rev_in_ga(.(X, XS), .(Y, YS)) → U1_ga(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
rev1_in_gga(X, [], X) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS), Z) → U3_gga(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
U3_gga(X, Y, YS, Z, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
rev2_in_gga(X, [], []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS), ZS) → U4_gga(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_gga(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_gga(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U6_gga(X, Y, YS, ZS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, YS, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
REV1_IN_GGA(X, .(Y, YS), Z) → REV1_IN_GGA(Y, YS, Z)
REV1_IN_GGA(X, .(Y, YS)) → REV1_IN_GGA(Y, YS)
From the DPs we obtained the following set of size-change graphs:
U1_GA(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → REV2_IN_GGA(X, XS, YS)
REV2_IN_GGA(X, .(Y, YS), ZS) → U4_GGA(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_GGA(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_GGA(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_GGA(X, Y, YS, ZS, rev_out_ga(US, VS)) → REV_IN_GA(.(X, VS), ZS)
REV_IN_GA(.(X, XS), .(Y, YS)) → U1_GA(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
U4_GGA(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → REV_IN_GA(US, VS)
REV2_IN_GGA(X, .(Y, YS), ZS) → REV2_IN_GGA(Y, YS, US)
rev_in_ga([], []) → rev_out_ga([], [])
rev_in_ga(.(X, XS), .(Y, YS)) → U1_ga(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
rev1_in_gga(X, [], X) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS), Z) → U3_gga(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
U3_gga(X, Y, YS, Z, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
rev2_in_gga(X, [], []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS), ZS) → U4_gga(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_gga(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_gga(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U6_gga(X, Y, YS, ZS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, YS, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
U1_GA(X, XS, rev1_out_gga(Y)) → REV2_IN_GGA(X, XS)
REV2_IN_GGA(X, .(Y, YS)) → U4_GGA(X, rev2_in_gga(Y, YS))
U4_GGA(X, rev2_out_gga(US)) → U5_GGA(X, rev_in_ga(US))
U5_GGA(X, rev_out_ga(VS)) → REV_IN_GA(.(X, VS))
REV_IN_GA(.(X, XS)) → U1_GA(X, XS, rev1_in_gga(X, XS))
U4_GGA(X, rev2_out_gga(US)) → REV_IN_GA(US)
REV2_IN_GGA(X, .(Y, YS)) → REV2_IN_GGA(Y, YS)
rev_in_ga([]) → rev_out_ga([])
rev_in_ga(.(X, XS)) → U1_ga(X, XS, rev1_in_gga(X, XS))
rev1_in_gga(X, []) → rev1_out_gga(X)
rev1_in_gga(X, .(Y, YS)) → U3_gga(rev1_in_gga(Y, YS))
U3_gga(rev1_out_gga(Z)) → rev1_out_gga(Z)
U1_ga(X, XS, rev1_out_gga(Y)) → U2_ga(Y, rev2_in_gga(X, XS))
rev2_in_gga(X, []) → rev2_out_gga([])
rev2_in_gga(X, .(Y, YS)) → U4_gga(X, rev2_in_gga(Y, YS))
U4_gga(X, rev2_out_gga(US)) → U5_gga(X, rev_in_ga(US))
U5_gga(X, rev_out_ga(VS)) → U6_gga(rev_in_ga(.(X, VS)))
U6_gga(rev_out_ga(ZS)) → rev2_out_gga(ZS)
U2_ga(Y, rev2_out_gga(YS)) → rev_out_ga(.(Y, YS))
rev_in_ga(x0)
rev1_in_gga(x0, x1)
U3_gga(x0)
U1_ga(x0, x1, x2)
rev2_in_gga(x0, x1)
U4_gga(x0, x1)
U5_gga(x0, x1)
U6_gga(x0)
U2_ga(x0, x1)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
REV_IN_GA(.(X, XS)) → U1_GA(X, XS, rev1_in_gga(X, XS))
U4_GGA(X, rev2_out_gga(US)) → REV_IN_GA(US)
REV2_IN_GGA(X, .(Y, YS)) → REV2_IN_GGA(Y, YS)
POL(.(x1, x2)) = 1 + x2
POL(REV2_IN_GGA(x1, x2)) = x2
POL(REV_IN_GA(x1)) = x1
POL(U1_GA(x1, x2, x3)) = x2
POL(U1_ga(x1, x2, x3)) = 1 + x2
POL(U2_ga(x1, x2)) = 1 + x2
POL(U3_gga(x1)) = 0
POL(U4_GGA(x1, x2)) = 1 + x2
POL(U4_gga(x1, x2)) = 1 + x2
POL(U5_GGA(x1, x2)) = 1 + x2
POL(U5_gga(x1, x2)) = 1 + x2
POL(U6_gga(x1)) = x1
POL([]) = 0
POL(rev1_in_gga(x1, x2)) = 0
POL(rev1_out_gga(x1)) = 0
POL(rev2_in_gga(x1, x2)) = x2
POL(rev2_out_gga(x1)) = x1
POL(rev_in_ga(x1)) = x1
POL(rev_out_ga(x1)) = x1
rev2_in_gga(X, []) → rev2_out_gga([])
rev2_in_gga(X, .(Y, YS)) → U4_gga(X, rev2_in_gga(Y, YS))
rev_in_ga([]) → rev_out_ga([])
rev_in_ga(.(X, XS)) → U1_ga(X, XS, rev1_in_gga(X, XS))
U1_ga(X, XS, rev1_out_gga(Y)) → U2_ga(Y, rev2_in_gga(X, XS))
U2_ga(Y, rev2_out_gga(YS)) → rev_out_ga(.(Y, YS))
U4_gga(X, rev2_out_gga(US)) → U5_gga(X, rev_in_ga(US))
U5_gga(X, rev_out_ga(VS)) → U6_gga(rev_in_ga(.(X, VS)))
U6_gga(rev_out_ga(ZS)) → rev2_out_gga(ZS)
U1_GA(X, XS, rev1_out_gga(Y)) → REV2_IN_GGA(X, XS)
REV2_IN_GGA(X, .(Y, YS)) → U4_GGA(X, rev2_in_gga(Y, YS))
U4_GGA(X, rev2_out_gga(US)) → U5_GGA(X, rev_in_ga(US))
U5_GGA(X, rev_out_ga(VS)) → REV_IN_GA(.(X, VS))
rev_in_ga([]) → rev_out_ga([])
rev_in_ga(.(X, XS)) → U1_ga(X, XS, rev1_in_gga(X, XS))
rev1_in_gga(X, []) → rev1_out_gga(X)
rev1_in_gga(X, .(Y, YS)) → U3_gga(rev1_in_gga(Y, YS))
U3_gga(rev1_out_gga(Z)) → rev1_out_gga(Z)
U1_ga(X, XS, rev1_out_gga(Y)) → U2_ga(Y, rev2_in_gga(X, XS))
rev2_in_gga(X, []) → rev2_out_gga([])
rev2_in_gga(X, .(Y, YS)) → U4_gga(X, rev2_in_gga(Y, YS))
U4_gga(X, rev2_out_gga(US)) → U5_gga(X, rev_in_ga(US))
U5_gga(X, rev_out_ga(VS)) → U6_gga(rev_in_ga(.(X, VS)))
U6_gga(rev_out_ga(ZS)) → rev2_out_gga(ZS)
U2_ga(Y, rev2_out_gga(YS)) → rev_out_ga(.(Y, YS))
rev_in_ga(x0)
rev1_in_gga(x0, x1)
U3_gga(x0)
U1_ga(x0, x1, x2)
rev2_in_gga(x0, x1)
U4_gga(x0, x1)
U5_gga(x0, x1)
U6_gga(x0)
U2_ga(x0, x1)
rev_in_ga([], []) → rev_out_ga([], [])
rev_in_ga(.(X, XS), .(Y, YS)) → U1_ga(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
rev1_in_gga(X, [], X) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS), Z) → U3_gga(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
U3_gga(X, Y, YS, Z, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
rev2_in_gga(X, [], []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS), ZS) → U4_gga(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_gga(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_gga(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U6_gga(X, Y, YS, ZS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, YS, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
rev_in_ga([], []) → rev_out_ga([], [])
rev_in_ga(.(X, XS), .(Y, YS)) → U1_ga(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
rev1_in_gga(X, [], X) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS), Z) → U3_gga(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
U3_gga(X, Y, YS, Z, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
rev2_in_gga(X, [], []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS), ZS) → U4_gga(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_gga(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_gga(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U6_gga(X, Y, YS, ZS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, YS, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
REV_IN_GA(.(X, XS), .(Y, YS)) → U1_GA(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
REV_IN_GA(.(X, XS), .(Y, YS)) → REV1_IN_GGA(X, XS, Y)
REV1_IN_GGA(X, .(Y, YS), Z) → U3_GGA(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
REV1_IN_GGA(X, .(Y, YS), Z) → REV1_IN_GGA(Y, YS, Z)
U1_GA(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_GA(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
U1_GA(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → REV2_IN_GGA(X, XS, YS)
REV2_IN_GGA(X, .(Y, YS), ZS) → U4_GGA(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
REV2_IN_GGA(X, .(Y, YS), ZS) → REV2_IN_GGA(Y, YS, US)
U4_GGA(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_GGA(X, Y, YS, ZS, rev_in_ga(US, VS))
U4_GGA(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → REV_IN_GA(US, VS)
U5_GGA(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_GGA(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U5_GGA(X, Y, YS, ZS, rev_out_ga(US, VS)) → REV_IN_GA(.(X, VS), ZS)
rev_in_ga([], []) → rev_out_ga([], [])
rev_in_ga(.(X, XS), .(Y, YS)) → U1_ga(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
rev1_in_gga(X, [], X) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS), Z) → U3_gga(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
U3_gga(X, Y, YS, Z, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
rev2_in_gga(X, [], []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS), ZS) → U4_gga(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_gga(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_gga(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U6_gga(X, Y, YS, ZS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, YS, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
REV_IN_GA(.(X, XS), .(Y, YS)) → U1_GA(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
REV_IN_GA(.(X, XS), .(Y, YS)) → REV1_IN_GGA(X, XS, Y)
REV1_IN_GGA(X, .(Y, YS), Z) → U3_GGA(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
REV1_IN_GGA(X, .(Y, YS), Z) → REV1_IN_GGA(Y, YS, Z)
U1_GA(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_GA(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
U1_GA(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → REV2_IN_GGA(X, XS, YS)
REV2_IN_GGA(X, .(Y, YS), ZS) → U4_GGA(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
REV2_IN_GGA(X, .(Y, YS), ZS) → REV2_IN_GGA(Y, YS, US)
U4_GGA(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_GGA(X, Y, YS, ZS, rev_in_ga(US, VS))
U4_GGA(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → REV_IN_GA(US, VS)
U5_GGA(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_GGA(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U5_GGA(X, Y, YS, ZS, rev_out_ga(US, VS)) → REV_IN_GA(.(X, VS), ZS)
rev_in_ga([], []) → rev_out_ga([], [])
rev_in_ga(.(X, XS), .(Y, YS)) → U1_ga(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
rev1_in_gga(X, [], X) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS), Z) → U3_gga(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
U3_gga(X, Y, YS, Z, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
rev2_in_gga(X, [], []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS), ZS) → U4_gga(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_gga(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_gga(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U6_gga(X, Y, YS, ZS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, YS, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
REV1_IN_GGA(X, .(Y, YS), Z) → REV1_IN_GGA(Y, YS, Z)
rev_in_ga([], []) → rev_out_ga([], [])
rev_in_ga(.(X, XS), .(Y, YS)) → U1_ga(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
rev1_in_gga(X, [], X) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS), Z) → U3_gga(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
U3_gga(X, Y, YS, Z, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
rev2_in_gga(X, [], []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS), ZS) → U4_gga(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_gga(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_gga(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U6_gga(X, Y, YS, ZS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, YS, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
REV1_IN_GGA(X, .(Y, YS), Z) → REV1_IN_GGA(Y, YS, Z)
REV1_IN_GGA(X, .(Y, YS)) → REV1_IN_GGA(Y, YS)
From the DPs we obtained the following set of size-change graphs:
U1_GA(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → REV2_IN_GGA(X, XS, YS)
REV2_IN_GGA(X, .(Y, YS), ZS) → U4_GGA(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_GGA(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_GGA(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_GGA(X, Y, YS, ZS, rev_out_ga(US, VS)) → REV_IN_GA(.(X, VS), ZS)
REV_IN_GA(.(X, XS), .(Y, YS)) → U1_GA(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
U4_GGA(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → REV_IN_GA(US, VS)
REV2_IN_GGA(X, .(Y, YS), ZS) → REV2_IN_GGA(Y, YS, US)
rev_in_ga([], []) → rev_out_ga([], [])
rev_in_ga(.(X, XS), .(Y, YS)) → U1_ga(X, XS, Y, YS, rev1_in_gga(X, XS, Y))
rev1_in_gga(X, [], X) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS), Z) → U3_gga(X, Y, YS, Z, rev1_in_gga(Y, YS, Z))
U3_gga(X, Y, YS, Z, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, Y, YS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, YS, rev2_in_gga(X, XS, YS))
rev2_in_gga(X, [], []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS), ZS) → U4_gga(X, Y, YS, ZS, rev2_in_gga(Y, YS, US))
U4_gga(X, Y, YS, ZS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, ZS, rev_in_ga(US, VS))
U5_gga(X, Y, YS, ZS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, ZS, rev_in_ga(.(X, VS), ZS))
U6_gga(X, Y, YS, ZS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, YS, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
U1_GA(X, XS, rev1_out_gga(X, XS, Y)) → REV2_IN_GGA(X, XS)
REV2_IN_GGA(X, .(Y, YS)) → U4_GGA(X, Y, YS, rev2_in_gga(Y, YS))
U4_GGA(X, Y, YS, rev2_out_gga(Y, YS, US)) → U5_GGA(X, Y, YS, rev_in_ga(US))
U5_GGA(X, Y, YS, rev_out_ga(US, VS)) → REV_IN_GA(.(X, VS))
REV_IN_GA(.(X, XS)) → U1_GA(X, XS, rev1_in_gga(X, XS))
U4_GGA(X, Y, YS, rev2_out_gga(Y, YS, US)) → REV_IN_GA(US)
REV2_IN_GGA(X, .(Y, YS)) → REV2_IN_GGA(Y, YS)
rev_in_ga([]) → rev_out_ga([], [])
rev_in_ga(.(X, XS)) → U1_ga(X, XS, rev1_in_gga(X, XS))
rev1_in_gga(X, []) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS)) → U3_gga(X, Y, YS, rev1_in_gga(Y, YS))
U3_gga(X, Y, YS, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, rev2_in_gga(X, XS))
rev2_in_gga(X, []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS)) → U4_gga(X, Y, YS, rev2_in_gga(Y, YS))
U4_gga(X, Y, YS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, rev_in_ga(US))
U5_gga(X, Y, YS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, rev_in_ga(.(X, VS)))
U6_gga(X, Y, YS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
rev_in_ga(x0)
rev1_in_gga(x0, x1)
U3_gga(x0, x1, x2, x3)
U1_ga(x0, x1, x2)
rev2_in_gga(x0, x1)
U4_gga(x0, x1, x2, x3)
U5_gga(x0, x1, x2, x3)
U6_gga(x0, x1, x2, x3)
U2_ga(x0, x1, x2, x3)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
REV_IN_GA(.(X, XS)) → U1_GA(X, XS, rev1_in_gga(X, XS))
U4_GGA(X, Y, YS, rev2_out_gga(Y, YS, US)) → REV_IN_GA(US)
REV2_IN_GGA(X, .(Y, YS)) → REV2_IN_GGA(Y, YS)
POL(.(x1, x2)) = 1 + x2
POL(REV2_IN_GGA(x1, x2)) = x2
POL(REV_IN_GA(x1)) = x1
POL(U1_GA(x1, x2, x3)) = x2
POL(U1_ga(x1, x2, x3)) = 1 + x2 + x3
POL(U2_ga(x1, x2, x3, x4)) = 1 + x4
POL(U3_gga(x1, x2, x3, x4)) = 1
POL(U4_GGA(x1, x2, x3, x4)) = x4
POL(U4_gga(x1, x2, x3, x4)) = 1 + x4
POL(U5_GGA(x1, x2, x3, x4)) = x4
POL(U5_gga(x1, x2, x3, x4)) = 1 + x4
POL(U6_gga(x1, x2, x3, x4)) = x4
POL([]) = 0
POL(rev1_in_gga(x1, x2)) = 1
POL(rev1_out_gga(x1, x2, x3)) = 1
POL(rev2_in_gga(x1, x2)) = 1 + x2
POL(rev2_out_gga(x1, x2, x3)) = 1 + x3
POL(rev_in_ga(x1)) = 1 + x1
POL(rev_out_ga(x1, x2)) = 1 + x2
rev2_in_gga(X, []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS)) → U4_gga(X, Y, YS, rev2_in_gga(Y, YS))
rev_in_ga([]) → rev_out_ga([], [])
rev_in_ga(.(X, XS)) → U1_ga(X, XS, rev1_in_gga(X, XS))
rev1_in_gga(X, []) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS)) → U3_gga(X, Y, YS, rev1_in_gga(Y, YS))
U1_ga(X, XS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, rev2_in_gga(X, XS))
U2_ga(X, XS, Y, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
U4_gga(X, Y, YS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, rev_in_ga(US))
U5_gga(X, Y, YS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, rev_in_ga(.(X, VS)))
U6_gga(X, Y, YS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U3_gga(X, Y, YS, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_GA(X, XS, rev1_out_gga(X, XS, Y)) → REV2_IN_GGA(X, XS)
REV2_IN_GGA(X, .(Y, YS)) → U4_GGA(X, Y, YS, rev2_in_gga(Y, YS))
U4_GGA(X, Y, YS, rev2_out_gga(Y, YS, US)) → U5_GGA(X, Y, YS, rev_in_ga(US))
U5_GGA(X, Y, YS, rev_out_ga(US, VS)) → REV_IN_GA(.(X, VS))
rev_in_ga([]) → rev_out_ga([], [])
rev_in_ga(.(X, XS)) → U1_ga(X, XS, rev1_in_gga(X, XS))
rev1_in_gga(X, []) → rev1_out_gga(X, [], X)
rev1_in_gga(X, .(Y, YS)) → U3_gga(X, Y, YS, rev1_in_gga(Y, YS))
U3_gga(X, Y, YS, rev1_out_gga(Y, YS, Z)) → rev1_out_gga(X, .(Y, YS), Z)
U1_ga(X, XS, rev1_out_gga(X, XS, Y)) → U2_ga(X, XS, Y, rev2_in_gga(X, XS))
rev2_in_gga(X, []) → rev2_out_gga(X, [], [])
rev2_in_gga(X, .(Y, YS)) → U4_gga(X, Y, YS, rev2_in_gga(Y, YS))
U4_gga(X, Y, YS, rev2_out_gga(Y, YS, US)) → U5_gga(X, Y, YS, rev_in_ga(US))
U5_gga(X, Y, YS, rev_out_ga(US, VS)) → U6_gga(X, Y, YS, rev_in_ga(.(X, VS)))
U6_gga(X, Y, YS, rev_out_ga(.(X, VS), ZS)) → rev2_out_gga(X, .(Y, YS), ZS)
U2_ga(X, XS, Y, rev2_out_gga(X, XS, YS)) → rev_out_ga(.(X, XS), .(Y, YS))
rev_in_ga(x0)
rev1_in_gga(x0, x1)
U3_gga(x0, x1, x2, x3)
U1_ga(x0, x1, x2)
rev2_in_gga(x0, x1)
U4_gga(x0, x1, x2, x3)
U5_gga(x0, x1, x2, x3)
U6_gga(x0, x1, x2, x3)
U2_ga(x0, x1, x2, x3)