↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
countstack2: (b,f)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
countstack_2_in_ga2(empty_0, 0_0) -> countstack_2_out_ga2(empty_0, 0_0)
countstack_2_in_ga2(push_22(nil_0, T), X) -> if_countstack_2_in_1_ga3(T, X, countstack_2_in_ga2(T, X))
countstack_2_in_ga2(push_22(cons_22(U, V), T), s_11(X)) -> if_countstack_2_in_2_ga5(U, V, T, X, countstack_2_in_ga2(push_22(U, push_22(V, T)), X))
if_countstack_2_in_2_ga5(U, V, T, X, countstack_2_out_ga2(push_22(U, push_22(V, T)), X)) -> countstack_2_out_ga2(push_22(cons_22(U, V), T), s_11(X))
if_countstack_2_in_1_ga3(T, X, countstack_2_out_ga2(T, X)) -> countstack_2_out_ga2(push_22(nil_0, T), X)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
countstack_2_in_ga2(empty_0, 0_0) -> countstack_2_out_ga2(empty_0, 0_0)
countstack_2_in_ga2(push_22(nil_0, T), X) -> if_countstack_2_in_1_ga3(T, X, countstack_2_in_ga2(T, X))
countstack_2_in_ga2(push_22(cons_22(U, V), T), s_11(X)) -> if_countstack_2_in_2_ga5(U, V, T, X, countstack_2_in_ga2(push_22(U, push_22(V, T)), X))
if_countstack_2_in_2_ga5(U, V, T, X, countstack_2_out_ga2(push_22(U, push_22(V, T)), X)) -> countstack_2_out_ga2(push_22(cons_22(U, V), T), s_11(X))
if_countstack_2_in_1_ga3(T, X, countstack_2_out_ga2(T, X)) -> countstack_2_out_ga2(push_22(nil_0, T), X)
COUNTSTACK_2_IN_GA2(push_22(nil_0, T), X) -> IF_COUNTSTACK_2_IN_1_GA3(T, X, countstack_2_in_ga2(T, X))
COUNTSTACK_2_IN_GA2(push_22(nil_0, T), X) -> COUNTSTACK_2_IN_GA2(T, X)
COUNTSTACK_2_IN_GA2(push_22(cons_22(U, V), T), s_11(X)) -> IF_COUNTSTACK_2_IN_2_GA5(U, V, T, X, countstack_2_in_ga2(push_22(U, push_22(V, T)), X))
COUNTSTACK_2_IN_GA2(push_22(cons_22(U, V), T), s_11(X)) -> COUNTSTACK_2_IN_GA2(push_22(U, push_22(V, T)), X)
countstack_2_in_ga2(empty_0, 0_0) -> countstack_2_out_ga2(empty_0, 0_0)
countstack_2_in_ga2(push_22(nil_0, T), X) -> if_countstack_2_in_1_ga3(T, X, countstack_2_in_ga2(T, X))
countstack_2_in_ga2(push_22(cons_22(U, V), T), s_11(X)) -> if_countstack_2_in_2_ga5(U, V, T, X, countstack_2_in_ga2(push_22(U, push_22(V, T)), X))
if_countstack_2_in_2_ga5(U, V, T, X, countstack_2_out_ga2(push_22(U, push_22(V, T)), X)) -> countstack_2_out_ga2(push_22(cons_22(U, V), T), s_11(X))
if_countstack_2_in_1_ga3(T, X, countstack_2_out_ga2(T, X)) -> countstack_2_out_ga2(push_22(nil_0, T), X)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
COUNTSTACK_2_IN_GA2(push_22(nil_0, T), X) -> IF_COUNTSTACK_2_IN_1_GA3(T, X, countstack_2_in_ga2(T, X))
COUNTSTACK_2_IN_GA2(push_22(nil_0, T), X) -> COUNTSTACK_2_IN_GA2(T, X)
COUNTSTACK_2_IN_GA2(push_22(cons_22(U, V), T), s_11(X)) -> IF_COUNTSTACK_2_IN_2_GA5(U, V, T, X, countstack_2_in_ga2(push_22(U, push_22(V, T)), X))
COUNTSTACK_2_IN_GA2(push_22(cons_22(U, V), T), s_11(X)) -> COUNTSTACK_2_IN_GA2(push_22(U, push_22(V, T)), X)
countstack_2_in_ga2(empty_0, 0_0) -> countstack_2_out_ga2(empty_0, 0_0)
countstack_2_in_ga2(push_22(nil_0, T), X) -> if_countstack_2_in_1_ga3(T, X, countstack_2_in_ga2(T, X))
countstack_2_in_ga2(push_22(cons_22(U, V), T), s_11(X)) -> if_countstack_2_in_2_ga5(U, V, T, X, countstack_2_in_ga2(push_22(U, push_22(V, T)), X))
if_countstack_2_in_2_ga5(U, V, T, X, countstack_2_out_ga2(push_22(U, push_22(V, T)), X)) -> countstack_2_out_ga2(push_22(cons_22(U, V), T), s_11(X))
if_countstack_2_in_1_ga3(T, X, countstack_2_out_ga2(T, X)) -> countstack_2_out_ga2(push_22(nil_0, T), X)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
COUNTSTACK_2_IN_GA2(push_22(cons_22(U, V), T), s_11(X)) -> COUNTSTACK_2_IN_GA2(push_22(U, push_22(V, T)), X)
COUNTSTACK_2_IN_GA2(push_22(nil_0, T), X) -> COUNTSTACK_2_IN_GA2(T, X)
countstack_2_in_ga2(empty_0, 0_0) -> countstack_2_out_ga2(empty_0, 0_0)
countstack_2_in_ga2(push_22(nil_0, T), X) -> if_countstack_2_in_1_ga3(T, X, countstack_2_in_ga2(T, X))
countstack_2_in_ga2(push_22(cons_22(U, V), T), s_11(X)) -> if_countstack_2_in_2_ga5(U, V, T, X, countstack_2_in_ga2(push_22(U, push_22(V, T)), X))
if_countstack_2_in_2_ga5(U, V, T, X, countstack_2_out_ga2(push_22(U, push_22(V, T)), X)) -> countstack_2_out_ga2(push_22(cons_22(U, V), T), s_11(X))
if_countstack_2_in_1_ga3(T, X, countstack_2_out_ga2(T, X)) -> countstack_2_out_ga2(push_22(nil_0, T), X)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
COUNTSTACK_2_IN_GA2(push_22(cons_22(U, V), T), s_11(X)) -> COUNTSTACK_2_IN_GA2(push_22(U, push_22(V, T)), X)
COUNTSTACK_2_IN_GA2(push_22(nil_0, T), X) -> COUNTSTACK_2_IN_GA2(T, X)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
COUNTSTACK_2_IN_GA1(push_22(cons_22(U, V), T)) -> COUNTSTACK_2_IN_GA1(push_22(U, push_22(V, T)))
COUNTSTACK_2_IN_GA1(push_22(nil_0, T)) -> COUNTSTACK_2_IN_GA1(T)
COUNTSTACK_2_IN_GA1(push_22(cons_22(U, V), T)) -> COUNTSTACK_2_IN_GA1(push_22(U, push_22(V, T)))
COUNTSTACK_2_IN_GA1(push_22(nil_0, T)) -> COUNTSTACK_2_IN_GA1(T)
POL(nil_0) = 0
POL(push_22(x1, x2)) = 1 + x1 + x2
POL(COUNTSTACK_2_IN_GA1(x1)) = 1 + x1
POL(cons_22(x1, x2)) = 2 + x1 + x2
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ PisEmptyProof