0 Prolog
↳1 PrologToPrologProblemTransformerProof (⇐)
↳2 Prolog
↳3 PrologToPiTRSProof (⇐)
↳4 PiTRS
↳5 DependencyPairsProof (⇔)
↳6 PiDP
↳7 DependencyGraphProof (⇔)
↳8 AND
↳9 PiDP
↳10 UsableRulesProof (⇔)
↳11 PiDP
↳12 PiDPToQDPProof (⇔)
↳13 QDP
↳14 QDPSizeChangeProof (⇔)
↳15 YES
↳16 PiDP
↳17 UsableRulesProof (⇔)
↳18 PiDP
↳19 PiDPToQDPProof (⇔)
↳20 QDP
↳21 MRRProof (⇔)
↳22 QDP
↳23 DependencyGraphProof (⇔)
↳24 TRUE
↳25 PiDP
↳26 UsableRulesProof (⇔)
↳27 PiDP
↳28 PiDPToQDPProof (⇔)
↳29 QDP
↳30 QDPSizeChangeProof (⇔)
↳31 YES
ordered1_in_g([]) → ordered1_out_g([])
ordered1_in_g(.(T3, [])) → ordered1_out_g(.(T3, []))
ordered1_in_g(.(s(T19), .(s(T20), T10))) → U2_g(T19, T20, T10, le19_in_gg(T19, T20))
le19_in_gg(s(T33), s(T34)) → U1_gg(T33, T34, le19_in_gg(T33, T34))
le19_in_gg(0, s(0)) → le19_out_gg(0, s(0))
le19_in_gg(0, 0) → le19_out_gg(0, 0)
U1_gg(T33, T34, le19_out_gg(T33, T34)) → le19_out_gg(s(T33), s(T34))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → U3_g(T19, T20, T10, ordered1_in_g(.(s(T20), T10)))
ordered1_in_g(.(0, .(s(0), T10))) → U4_g(T10, ordered1_in_g(.(s(0), T10)))
ordered1_in_g(.(0, .(0, T10))) → U5_g(T10, ordered1_in_g(.(0, T10)))
U5_g(T10, ordered1_out_g(.(0, T10))) → ordered1_out_g(.(0, .(0, T10)))
U4_g(T10, ordered1_out_g(.(s(0), T10))) → ordered1_out_g(.(0, .(s(0), T10)))
U3_g(T19, T20, T10, ordered1_out_g(.(s(T20), T10))) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
ordered1_in_g([]) → ordered1_out_g([])
ordered1_in_g(.(T3, [])) → ordered1_out_g(.(T3, []))
ordered1_in_g(.(s(T19), .(s(T20), T10))) → U2_g(T19, T20, T10, le19_in_gg(T19, T20))
le19_in_gg(s(T33), s(T34)) → U1_gg(T33, T34, le19_in_gg(T33, T34))
le19_in_gg(0, s(0)) → le19_out_gg(0, s(0))
le19_in_gg(0, 0) → le19_out_gg(0, 0)
U1_gg(T33, T34, le19_out_gg(T33, T34)) → le19_out_gg(s(T33), s(T34))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → U3_g(T19, T20, T10, ordered1_in_g(.(s(T20), T10)))
ordered1_in_g(.(0, .(s(0), T10))) → U4_g(T10, ordered1_in_g(.(s(0), T10)))
ordered1_in_g(.(0, .(0, T10))) → U5_g(T10, ordered1_in_g(.(0, T10)))
U5_g(T10, ordered1_out_g(.(0, T10))) → ordered1_out_g(.(0, .(0, T10)))
U4_g(T10, ordered1_out_g(.(s(0), T10))) → ordered1_out_g(.(0, .(s(0), T10)))
U3_g(T19, T20, T10, ordered1_out_g(.(s(T20), T10))) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
ORDERED1_IN_G(.(s(T19), .(s(T20), T10))) → U2_G(T19, T20, T10, le19_in_gg(T19, T20))
ORDERED1_IN_G(.(s(T19), .(s(T20), T10))) → LE19_IN_GG(T19, T20)
LE19_IN_GG(s(T33), s(T34)) → U1_GG(T33, T34, le19_in_gg(T33, T34))
LE19_IN_GG(s(T33), s(T34)) → LE19_IN_GG(T33, T34)
U2_G(T19, T20, T10, le19_out_gg(T19, T20)) → U3_G(T19, T20, T10, ordered1_in_g(.(s(T20), T10)))
U2_G(T19, T20, T10, le19_out_gg(T19, T20)) → ORDERED1_IN_G(.(s(T20), T10))
ORDERED1_IN_G(.(0, .(s(0), T10))) → U4_G(T10, ordered1_in_g(.(s(0), T10)))
ORDERED1_IN_G(.(0, .(s(0), T10))) → ORDERED1_IN_G(.(s(0), T10))
ORDERED1_IN_G(.(0, .(0, T10))) → U5_G(T10, ordered1_in_g(.(0, T10)))
ORDERED1_IN_G(.(0, .(0, T10))) → ORDERED1_IN_G(.(0, T10))
ordered1_in_g([]) → ordered1_out_g([])
ordered1_in_g(.(T3, [])) → ordered1_out_g(.(T3, []))
ordered1_in_g(.(s(T19), .(s(T20), T10))) → U2_g(T19, T20, T10, le19_in_gg(T19, T20))
le19_in_gg(s(T33), s(T34)) → U1_gg(T33, T34, le19_in_gg(T33, T34))
le19_in_gg(0, s(0)) → le19_out_gg(0, s(0))
le19_in_gg(0, 0) → le19_out_gg(0, 0)
U1_gg(T33, T34, le19_out_gg(T33, T34)) → le19_out_gg(s(T33), s(T34))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → U3_g(T19, T20, T10, ordered1_in_g(.(s(T20), T10)))
ordered1_in_g(.(0, .(s(0), T10))) → U4_g(T10, ordered1_in_g(.(s(0), T10)))
ordered1_in_g(.(0, .(0, T10))) → U5_g(T10, ordered1_in_g(.(0, T10)))
U5_g(T10, ordered1_out_g(.(0, T10))) → ordered1_out_g(.(0, .(0, T10)))
U4_g(T10, ordered1_out_g(.(s(0), T10))) → ordered1_out_g(.(0, .(s(0), T10)))
U3_g(T19, T20, T10, ordered1_out_g(.(s(T20), T10))) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
ORDERED1_IN_G(.(s(T19), .(s(T20), T10))) → U2_G(T19, T20, T10, le19_in_gg(T19, T20))
ORDERED1_IN_G(.(s(T19), .(s(T20), T10))) → LE19_IN_GG(T19, T20)
LE19_IN_GG(s(T33), s(T34)) → U1_GG(T33, T34, le19_in_gg(T33, T34))
LE19_IN_GG(s(T33), s(T34)) → LE19_IN_GG(T33, T34)
U2_G(T19, T20, T10, le19_out_gg(T19, T20)) → U3_G(T19, T20, T10, ordered1_in_g(.(s(T20), T10)))
U2_G(T19, T20, T10, le19_out_gg(T19, T20)) → ORDERED1_IN_G(.(s(T20), T10))
ORDERED1_IN_G(.(0, .(s(0), T10))) → U4_G(T10, ordered1_in_g(.(s(0), T10)))
ORDERED1_IN_G(.(0, .(s(0), T10))) → ORDERED1_IN_G(.(s(0), T10))
ORDERED1_IN_G(.(0, .(0, T10))) → U5_G(T10, ordered1_in_g(.(0, T10)))
ORDERED1_IN_G(.(0, .(0, T10))) → ORDERED1_IN_G(.(0, T10))
ordered1_in_g([]) → ordered1_out_g([])
ordered1_in_g(.(T3, [])) → ordered1_out_g(.(T3, []))
ordered1_in_g(.(s(T19), .(s(T20), T10))) → U2_g(T19, T20, T10, le19_in_gg(T19, T20))
le19_in_gg(s(T33), s(T34)) → U1_gg(T33, T34, le19_in_gg(T33, T34))
le19_in_gg(0, s(0)) → le19_out_gg(0, s(0))
le19_in_gg(0, 0) → le19_out_gg(0, 0)
U1_gg(T33, T34, le19_out_gg(T33, T34)) → le19_out_gg(s(T33), s(T34))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → U3_g(T19, T20, T10, ordered1_in_g(.(s(T20), T10)))
ordered1_in_g(.(0, .(s(0), T10))) → U4_g(T10, ordered1_in_g(.(s(0), T10)))
ordered1_in_g(.(0, .(0, T10))) → U5_g(T10, ordered1_in_g(.(0, T10)))
U5_g(T10, ordered1_out_g(.(0, T10))) → ordered1_out_g(.(0, .(0, T10)))
U4_g(T10, ordered1_out_g(.(s(0), T10))) → ordered1_out_g(.(0, .(s(0), T10)))
U3_g(T19, T20, T10, ordered1_out_g(.(s(T20), T10))) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
LE19_IN_GG(s(T33), s(T34)) → LE19_IN_GG(T33, T34)
ordered1_in_g([]) → ordered1_out_g([])
ordered1_in_g(.(T3, [])) → ordered1_out_g(.(T3, []))
ordered1_in_g(.(s(T19), .(s(T20), T10))) → U2_g(T19, T20, T10, le19_in_gg(T19, T20))
le19_in_gg(s(T33), s(T34)) → U1_gg(T33, T34, le19_in_gg(T33, T34))
le19_in_gg(0, s(0)) → le19_out_gg(0, s(0))
le19_in_gg(0, 0) → le19_out_gg(0, 0)
U1_gg(T33, T34, le19_out_gg(T33, T34)) → le19_out_gg(s(T33), s(T34))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → U3_g(T19, T20, T10, ordered1_in_g(.(s(T20), T10)))
ordered1_in_g(.(0, .(s(0), T10))) → U4_g(T10, ordered1_in_g(.(s(0), T10)))
ordered1_in_g(.(0, .(0, T10))) → U5_g(T10, ordered1_in_g(.(0, T10)))
U5_g(T10, ordered1_out_g(.(0, T10))) → ordered1_out_g(.(0, .(0, T10)))
U4_g(T10, ordered1_out_g(.(s(0), T10))) → ordered1_out_g(.(0, .(s(0), T10)))
U3_g(T19, T20, T10, ordered1_out_g(.(s(T20), T10))) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
LE19_IN_GG(s(T33), s(T34)) → LE19_IN_GG(T33, T34)
LE19_IN_GG(s(T33), s(T34)) → LE19_IN_GG(T33, T34)
From the DPs we obtained the following set of size-change graphs:
U2_G(T19, T20, T10, le19_out_gg(T19, T20)) → ORDERED1_IN_G(.(s(T20), T10))
ORDERED1_IN_G(.(s(T19), .(s(T20), T10))) → U2_G(T19, T20, T10, le19_in_gg(T19, T20))
ordered1_in_g([]) → ordered1_out_g([])
ordered1_in_g(.(T3, [])) → ordered1_out_g(.(T3, []))
ordered1_in_g(.(s(T19), .(s(T20), T10))) → U2_g(T19, T20, T10, le19_in_gg(T19, T20))
le19_in_gg(s(T33), s(T34)) → U1_gg(T33, T34, le19_in_gg(T33, T34))
le19_in_gg(0, s(0)) → le19_out_gg(0, s(0))
le19_in_gg(0, 0) → le19_out_gg(0, 0)
U1_gg(T33, T34, le19_out_gg(T33, T34)) → le19_out_gg(s(T33), s(T34))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → U3_g(T19, T20, T10, ordered1_in_g(.(s(T20), T10)))
ordered1_in_g(.(0, .(s(0), T10))) → U4_g(T10, ordered1_in_g(.(s(0), T10)))
ordered1_in_g(.(0, .(0, T10))) → U5_g(T10, ordered1_in_g(.(0, T10)))
U5_g(T10, ordered1_out_g(.(0, T10))) → ordered1_out_g(.(0, .(0, T10)))
U4_g(T10, ordered1_out_g(.(s(0), T10))) → ordered1_out_g(.(0, .(s(0), T10)))
U3_g(T19, T20, T10, ordered1_out_g(.(s(T20), T10))) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
U2_G(T19, T20, T10, le19_out_gg(T19, T20)) → ORDERED1_IN_G(.(s(T20), T10))
ORDERED1_IN_G(.(s(T19), .(s(T20), T10))) → U2_G(T19, T20, T10, le19_in_gg(T19, T20))
le19_in_gg(s(T33), s(T34)) → U1_gg(T33, T34, le19_in_gg(T33, T34))
le19_in_gg(0, s(0)) → le19_out_gg(0, s(0))
le19_in_gg(0, 0) → le19_out_gg(0, 0)
U1_gg(T33, T34, le19_out_gg(T33, T34)) → le19_out_gg(s(T33), s(T34))
U2_G(T19, T20, T10, le19_out_gg(T19, T20)) → ORDERED1_IN_G(.(s(T20), T10))
ORDERED1_IN_G(.(s(T19), .(s(T20), T10))) → U2_G(T19, T20, T10, le19_in_gg(T19, T20))
le19_in_gg(s(T33), s(T34)) → U1_gg(T33, T34, le19_in_gg(T33, T34))
le19_in_gg(0, s(0)) → le19_out_gg(0, s(0))
le19_in_gg(0, 0) → le19_out_gg(0, 0)
U1_gg(T33, T34, le19_out_gg(T33, T34)) → le19_out_gg(s(T33), s(T34))
le19_in_gg(x0, x1)
U1_gg(x0, x1, x2)
ORDERED1_IN_G(.(s(T19), .(s(T20), T10))) → U2_G(T19, T20, T10, le19_in_gg(T19, T20))
POL(.(x1, x2)) = 1 + x1 + x2
POL(0) = 0
POL(ORDERED1_IN_G(x1)) = 2·x1
POL(U1_gg(x1, x2, x3)) = 2·x1 + 2·x2 + x3
POL(U2_G(x1, x2, x3, x4)) = 2 + x1 + 2·x2 + 2·x3 + x4
POL(le19_in_gg(x1, x2)) = 2·x1 + 2·x2
POL(le19_out_gg(x1, x2)) = 2·x1 + 2·x2
POL(s(x1)) = 2·x1
U2_G(T19, T20, T10, le19_out_gg(T19, T20)) → ORDERED1_IN_G(.(s(T20), T10))
le19_in_gg(s(T33), s(T34)) → U1_gg(T33, T34, le19_in_gg(T33, T34))
le19_in_gg(0, s(0)) → le19_out_gg(0, s(0))
le19_in_gg(0, 0) → le19_out_gg(0, 0)
U1_gg(T33, T34, le19_out_gg(T33, T34)) → le19_out_gg(s(T33), s(T34))
le19_in_gg(x0, x1)
U1_gg(x0, x1, x2)
ORDERED1_IN_G(.(0, .(0, T10))) → ORDERED1_IN_G(.(0, T10))
ordered1_in_g([]) → ordered1_out_g([])
ordered1_in_g(.(T3, [])) → ordered1_out_g(.(T3, []))
ordered1_in_g(.(s(T19), .(s(T20), T10))) → U2_g(T19, T20, T10, le19_in_gg(T19, T20))
le19_in_gg(s(T33), s(T34)) → U1_gg(T33, T34, le19_in_gg(T33, T34))
le19_in_gg(0, s(0)) → le19_out_gg(0, s(0))
le19_in_gg(0, 0) → le19_out_gg(0, 0)
U1_gg(T33, T34, le19_out_gg(T33, T34)) → le19_out_gg(s(T33), s(T34))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
U2_g(T19, T20, T10, le19_out_gg(T19, T20)) → U3_g(T19, T20, T10, ordered1_in_g(.(s(T20), T10)))
ordered1_in_g(.(0, .(s(0), T10))) → U4_g(T10, ordered1_in_g(.(s(0), T10)))
ordered1_in_g(.(0, .(0, T10))) → U5_g(T10, ordered1_in_g(.(0, T10)))
U5_g(T10, ordered1_out_g(.(0, T10))) → ordered1_out_g(.(0, .(0, T10)))
U4_g(T10, ordered1_out_g(.(s(0), T10))) → ordered1_out_g(.(0, .(s(0), T10)))
U3_g(T19, T20, T10, ordered1_out_g(.(s(T20), T10))) → ordered1_out_g(.(s(T19), .(s(T20), T10)))
ORDERED1_IN_G(.(0, .(0, T10))) → ORDERED1_IN_G(.(0, T10))
ORDERED1_IN_G(.(0, .(0, T10))) → ORDERED1_IN_G(.(0, T10))
From the DPs we obtained the following set of size-change graphs: