0 Prolog
↳1 PrologToPiTRSProof (⇐)
↳2 PiTRS
↳3 DependencyPairsProof (⇔)
↳4 PiDP
↳5 DependencyGraphProof (⇔)
↳6 PiDP
↳7 UsableRulesProof (⇔)
↳8 PiDP
↳9 PiDPToQDPProof (⇐)
↳10 QDP
↳11 QDPSizeChangeProof (⇔)
↳12 TRUE
↳13 PrologToPiTRSProof (⇐)
↳14 PiTRS
↳15 DependencyPairsProof (⇔)
↳16 PiDP
↳17 DependencyGraphProof (⇔)
↳18 PiDP
↳19 UsableRulesProof (⇔)
↳20 PiDP
↳21 PiDPToQDPProof (⇐)
↳22 QDP
preorder_in_ga(T, Xs) → U1_ga(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
preorder_dl_in_ga(nil, -(X, X)) → preorder_dl_out_ga(nil, -(X, X))
preorder_dl_in_ga(tree(L, X, R), -(.(X, Xs), Zs)) → U2_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
U2_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U3_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(R, -(Ys, Zs))) → preorder_dl_out_ga(tree(L, X, R), -(.(X, Xs), Zs))
U1_ga(T, Xs, preorder_dl_out_ga(T, -(Xs, []))) → preorder_out_ga(T, Xs)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
preorder_in_ga(T, Xs) → U1_ga(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
preorder_dl_in_ga(nil, -(X, X)) → preorder_dl_out_ga(nil, -(X, X))
preorder_dl_in_ga(tree(L, X, R), -(.(X, Xs), Zs)) → U2_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
U2_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U3_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(R, -(Ys, Zs))) → preorder_dl_out_ga(tree(L, X, R), -(.(X, Xs), Zs))
U1_ga(T, Xs, preorder_dl_out_ga(T, -(Xs, []))) → preorder_out_ga(T, Xs)
PREORDER_IN_GA(T, Xs) → U1_GA(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
PREORDER_IN_GA(T, Xs) → PREORDER_DL_IN_GA(T, -(Xs, []))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → U2_GA(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → PREORDER_DL_IN_GA(L, -(Xs, Ys))
U2_GA(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_GA(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U2_GA(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → PREORDER_DL_IN_GA(R, -(Ys, Zs))
preorder_in_ga(T, Xs) → U1_ga(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
preorder_dl_in_ga(nil, -(X, X)) → preorder_dl_out_ga(nil, -(X, X))
preorder_dl_in_ga(tree(L, X, R), -(.(X, Xs), Zs)) → U2_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
U2_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U3_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(R, -(Ys, Zs))) → preorder_dl_out_ga(tree(L, X, R), -(.(X, Xs), Zs))
U1_ga(T, Xs, preorder_dl_out_ga(T, -(Xs, []))) → preorder_out_ga(T, Xs)
PREORDER_IN_GA(T, Xs) → U1_GA(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
PREORDER_IN_GA(T, Xs) → PREORDER_DL_IN_GA(T, -(Xs, []))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → U2_GA(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → PREORDER_DL_IN_GA(L, -(Xs, Ys))
U2_GA(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_GA(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U2_GA(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → PREORDER_DL_IN_GA(R, -(Ys, Zs))
preorder_in_ga(T, Xs) → U1_ga(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
preorder_dl_in_ga(nil, -(X, X)) → preorder_dl_out_ga(nil, -(X, X))
preorder_dl_in_ga(tree(L, X, R), -(.(X, Xs), Zs)) → U2_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
U2_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U3_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(R, -(Ys, Zs))) → preorder_dl_out_ga(tree(L, X, R), -(.(X, Xs), Zs))
U1_ga(T, Xs, preorder_dl_out_ga(T, -(Xs, []))) → preorder_out_ga(T, Xs)
U2_GA(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → PREORDER_DL_IN_GA(R, -(Ys, Zs))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → U2_GA(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → PREORDER_DL_IN_GA(L, -(Xs, Ys))
preorder_in_ga(T, Xs) → U1_ga(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
preorder_dl_in_ga(nil, -(X, X)) → preorder_dl_out_ga(nil, -(X, X))
preorder_dl_in_ga(tree(L, X, R), -(.(X, Xs), Zs)) → U2_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
U2_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U3_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(R, -(Ys, Zs))) → preorder_dl_out_ga(tree(L, X, R), -(.(X, Xs), Zs))
U1_ga(T, Xs, preorder_dl_out_ga(T, -(Xs, []))) → preorder_out_ga(T, Xs)
U2_GA(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → PREORDER_DL_IN_GA(R, -(Ys, Zs))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → U2_GA(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → PREORDER_DL_IN_GA(L, -(Xs, Ys))
preorder_dl_in_ga(nil, -(X, X)) → preorder_dl_out_ga(nil, -(X, X))
preorder_dl_in_ga(tree(L, X, R), -(.(X, Xs), Zs)) → U2_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
U2_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U3_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(R, -(Ys, Zs))) → preorder_dl_out_ga(tree(L, X, R), -(.(X, Xs), Zs))
U2_GA(R, preorder_dl_out_ga) → PREORDER_DL_IN_GA(R)
PREORDER_DL_IN_GA(tree(L, X, R)) → U2_GA(R, preorder_dl_in_ga(L))
PREORDER_DL_IN_GA(tree(L, X, R)) → PREORDER_DL_IN_GA(L)
preorder_dl_in_ga(nil) → preorder_dl_out_ga
preorder_dl_in_ga(tree(L, X, R)) → U2_ga(R, preorder_dl_in_ga(L))
U2_ga(R, preorder_dl_out_ga) → U3_ga(preorder_dl_in_ga(R))
U3_ga(preorder_dl_out_ga) → preorder_dl_out_ga
preorder_dl_in_ga(x0)
U2_ga(x0, x1)
U3_ga(x0)
From the DPs we obtained the following set of size-change graphs:
preorder_in_ga(T, Xs) → U1_ga(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
preorder_dl_in_ga(nil, -(X, X)) → preorder_dl_out_ga(nil, -(X, X))
preorder_dl_in_ga(tree(L, X, R), -(.(X, Xs), Zs)) → U2_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
U2_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U3_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(R, -(Ys, Zs))) → preorder_dl_out_ga(tree(L, X, R), -(.(X, Xs), Zs))
U1_ga(T, Xs, preorder_dl_out_ga(T, -(Xs, []))) → preorder_out_ga(T, Xs)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
preorder_in_ga(T, Xs) → U1_ga(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
preorder_dl_in_ga(nil, -(X, X)) → preorder_dl_out_ga(nil, -(X, X))
preorder_dl_in_ga(tree(L, X, R), -(.(X, Xs), Zs)) → U2_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
U2_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U3_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(R, -(Ys, Zs))) → preorder_dl_out_ga(tree(L, X, R), -(.(X, Xs), Zs))
U1_ga(T, Xs, preorder_dl_out_ga(T, -(Xs, []))) → preorder_out_ga(T, Xs)
PREORDER_IN_GA(T, Xs) → U1_GA(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
PREORDER_IN_GA(T, Xs) → PREORDER_DL_IN_GA(T, -(Xs, []))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → U2_GA(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → PREORDER_DL_IN_GA(L, -(Xs, Ys))
U2_GA(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_GA(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U2_GA(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → PREORDER_DL_IN_GA(R, -(Ys, Zs))
preorder_in_ga(T, Xs) → U1_ga(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
preorder_dl_in_ga(nil, -(X, X)) → preorder_dl_out_ga(nil, -(X, X))
preorder_dl_in_ga(tree(L, X, R), -(.(X, Xs), Zs)) → U2_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
U2_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U3_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(R, -(Ys, Zs))) → preorder_dl_out_ga(tree(L, X, R), -(.(X, Xs), Zs))
U1_ga(T, Xs, preorder_dl_out_ga(T, -(Xs, []))) → preorder_out_ga(T, Xs)
PREORDER_IN_GA(T, Xs) → U1_GA(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
PREORDER_IN_GA(T, Xs) → PREORDER_DL_IN_GA(T, -(Xs, []))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → U2_GA(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → PREORDER_DL_IN_GA(L, -(Xs, Ys))
U2_GA(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_GA(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U2_GA(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → PREORDER_DL_IN_GA(R, -(Ys, Zs))
preorder_in_ga(T, Xs) → U1_ga(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
preorder_dl_in_ga(nil, -(X, X)) → preorder_dl_out_ga(nil, -(X, X))
preorder_dl_in_ga(tree(L, X, R), -(.(X, Xs), Zs)) → U2_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
U2_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U3_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(R, -(Ys, Zs))) → preorder_dl_out_ga(tree(L, X, R), -(.(X, Xs), Zs))
U1_ga(T, Xs, preorder_dl_out_ga(T, -(Xs, []))) → preorder_out_ga(T, Xs)
U2_GA(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → PREORDER_DL_IN_GA(R, -(Ys, Zs))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → U2_GA(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → PREORDER_DL_IN_GA(L, -(Xs, Ys))
preorder_in_ga(T, Xs) → U1_ga(T, Xs, preorder_dl_in_ga(T, -(Xs, [])))
preorder_dl_in_ga(nil, -(X, X)) → preorder_dl_out_ga(nil, -(X, X))
preorder_dl_in_ga(tree(L, X, R), -(.(X, Xs), Zs)) → U2_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
U2_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U3_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(R, -(Ys, Zs))) → preorder_dl_out_ga(tree(L, X, R), -(.(X, Xs), Zs))
U1_ga(T, Xs, preorder_dl_out_ga(T, -(Xs, []))) → preorder_out_ga(T, Xs)
U2_GA(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → PREORDER_DL_IN_GA(R, -(Ys, Zs))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → U2_GA(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
PREORDER_DL_IN_GA(tree(L, X, R), -(.(X, Xs), Zs)) → PREORDER_DL_IN_GA(L, -(Xs, Ys))
preorder_dl_in_ga(nil, -(X, X)) → preorder_dl_out_ga(nil, -(X, X))
preorder_dl_in_ga(tree(L, X, R), -(.(X, Xs), Zs)) → U2_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(L, -(Xs, Ys)))
U2_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(L, -(Xs, Ys))) → U3_ga(L, X, R, Xs, Zs, preorder_dl_in_ga(R, -(Ys, Zs)))
U3_ga(L, X, R, Xs, Zs, preorder_dl_out_ga(R, -(Ys, Zs))) → preorder_dl_out_ga(tree(L, X, R), -(.(X, Xs), Zs))
U2_GA(L, X, R, preorder_dl_out_ga(L)) → PREORDER_DL_IN_GA(R)
PREORDER_DL_IN_GA(tree(L, X, R)) → U2_GA(L, X, R, preorder_dl_in_ga(L))
PREORDER_DL_IN_GA(tree(L, X, R)) → PREORDER_DL_IN_GA(L)
preorder_dl_in_ga(nil) → preorder_dl_out_ga(nil)
preorder_dl_in_ga(tree(L, X, R)) → U2_ga(L, X, R, preorder_dl_in_ga(L))
U2_ga(L, X, R, preorder_dl_out_ga(L)) → U3_ga(L, X, R, preorder_dl_in_ga(R))
U3_ga(L, X, R, preorder_dl_out_ga(R)) → preorder_dl_out_ga(tree(L, X, R))
preorder_dl_in_ga(x0)
U2_ga(x0, x1, x2, x3)
U3_ga(x0, x1, x2, x3)