↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
lessleaves2: (b,b)
append3: (b,b,f)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
lessleaves_2_in_gg2(nil_0, cons_22(W, Z)) -> lessleaves_2_out_gg2(nil_0, cons_22(W, Z))
lessleaves_2_in_gg2(cons_22(U, V), cons_22(W, Z)) -> if_lessleaves_2_in_1_gg5(U, V, W, Z, append_3_in_gga3(U, V, U1))
append_3_in_gga3(nil_0, Y, Y) -> append_3_out_gga3(nil_0, Y, Y)
append_3_in_gga3(cons_22(U, V), Y, cons_22(U, Z)) -> if_append_3_in_1_gga5(U, V, Y, Z, append_3_in_gga3(V, Y, Z))
if_append_3_in_1_gga5(U, V, Y, Z, append_3_out_gga3(V, Y, Z)) -> append_3_out_gga3(cons_22(U, V), Y, cons_22(U, Z))
if_lessleaves_2_in_1_gg5(U, V, W, Z, append_3_out_gga3(U, V, U1)) -> if_lessleaves_2_in_2_gg6(U, V, W, Z, U1, append_3_in_gga3(W, Z, W1))
if_lessleaves_2_in_2_gg6(U, V, W, Z, U1, append_3_out_gga3(W, Z, W1)) -> if_lessleaves_2_in_3_gg7(U, V, W, Z, U1, W1, lessleaves_2_in_gg2(U1, W1))
if_lessleaves_2_in_3_gg7(U, V, W, Z, U1, W1, lessleaves_2_out_gg2(U1, W1)) -> lessleaves_2_out_gg2(cons_22(U, V), cons_22(W, Z))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
lessleaves_2_in_gg2(nil_0, cons_22(W, Z)) -> lessleaves_2_out_gg2(nil_0, cons_22(W, Z))
lessleaves_2_in_gg2(cons_22(U, V), cons_22(W, Z)) -> if_lessleaves_2_in_1_gg5(U, V, W, Z, append_3_in_gga3(U, V, U1))
append_3_in_gga3(nil_0, Y, Y) -> append_3_out_gga3(nil_0, Y, Y)
append_3_in_gga3(cons_22(U, V), Y, cons_22(U, Z)) -> if_append_3_in_1_gga5(U, V, Y, Z, append_3_in_gga3(V, Y, Z))
if_append_3_in_1_gga5(U, V, Y, Z, append_3_out_gga3(V, Y, Z)) -> append_3_out_gga3(cons_22(U, V), Y, cons_22(U, Z))
if_lessleaves_2_in_1_gg5(U, V, W, Z, append_3_out_gga3(U, V, U1)) -> if_lessleaves_2_in_2_gg6(U, V, W, Z, U1, append_3_in_gga3(W, Z, W1))
if_lessleaves_2_in_2_gg6(U, V, W, Z, U1, append_3_out_gga3(W, Z, W1)) -> if_lessleaves_2_in_3_gg7(U, V, W, Z, U1, W1, lessleaves_2_in_gg2(U1, W1))
if_lessleaves_2_in_3_gg7(U, V, W, Z, U1, W1, lessleaves_2_out_gg2(U1, W1)) -> lessleaves_2_out_gg2(cons_22(U, V), cons_22(W, Z))
LESSLEAVES_2_IN_GG2(cons_22(U, V), cons_22(W, Z)) -> IF_LESSLEAVES_2_IN_1_GG5(U, V, W, Z, append_3_in_gga3(U, V, U1))
LESSLEAVES_2_IN_GG2(cons_22(U, V), cons_22(W, Z)) -> APPEND_3_IN_GGA3(U, V, U1)
APPEND_3_IN_GGA3(cons_22(U, V), Y, cons_22(U, Z)) -> IF_APPEND_3_IN_1_GGA5(U, V, Y, Z, append_3_in_gga3(V, Y, Z))
APPEND_3_IN_GGA3(cons_22(U, V), Y, cons_22(U, Z)) -> APPEND_3_IN_GGA3(V, Y, Z)
IF_LESSLEAVES_2_IN_1_GG5(U, V, W, Z, append_3_out_gga3(U, V, U1)) -> IF_LESSLEAVES_2_IN_2_GG6(U, V, W, Z, U1, append_3_in_gga3(W, Z, W1))
IF_LESSLEAVES_2_IN_1_GG5(U, V, W, Z, append_3_out_gga3(U, V, U1)) -> APPEND_3_IN_GGA3(W, Z, W1)
IF_LESSLEAVES_2_IN_2_GG6(U, V, W, Z, U1, append_3_out_gga3(W, Z, W1)) -> IF_LESSLEAVES_2_IN_3_GG7(U, V, W, Z, U1, W1, lessleaves_2_in_gg2(U1, W1))
IF_LESSLEAVES_2_IN_2_GG6(U, V, W, Z, U1, append_3_out_gga3(W, Z, W1)) -> LESSLEAVES_2_IN_GG2(U1, W1)
lessleaves_2_in_gg2(nil_0, cons_22(W, Z)) -> lessleaves_2_out_gg2(nil_0, cons_22(W, Z))
lessleaves_2_in_gg2(cons_22(U, V), cons_22(W, Z)) -> if_lessleaves_2_in_1_gg5(U, V, W, Z, append_3_in_gga3(U, V, U1))
append_3_in_gga3(nil_0, Y, Y) -> append_3_out_gga3(nil_0, Y, Y)
append_3_in_gga3(cons_22(U, V), Y, cons_22(U, Z)) -> if_append_3_in_1_gga5(U, V, Y, Z, append_3_in_gga3(V, Y, Z))
if_append_3_in_1_gga5(U, V, Y, Z, append_3_out_gga3(V, Y, Z)) -> append_3_out_gga3(cons_22(U, V), Y, cons_22(U, Z))
if_lessleaves_2_in_1_gg5(U, V, W, Z, append_3_out_gga3(U, V, U1)) -> if_lessleaves_2_in_2_gg6(U, V, W, Z, U1, append_3_in_gga3(W, Z, W1))
if_lessleaves_2_in_2_gg6(U, V, W, Z, U1, append_3_out_gga3(W, Z, W1)) -> if_lessleaves_2_in_3_gg7(U, V, W, Z, U1, W1, lessleaves_2_in_gg2(U1, W1))
if_lessleaves_2_in_3_gg7(U, V, W, Z, U1, W1, lessleaves_2_out_gg2(U1, W1)) -> lessleaves_2_out_gg2(cons_22(U, V), cons_22(W, Z))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
LESSLEAVES_2_IN_GG2(cons_22(U, V), cons_22(W, Z)) -> IF_LESSLEAVES_2_IN_1_GG5(U, V, W, Z, append_3_in_gga3(U, V, U1))
LESSLEAVES_2_IN_GG2(cons_22(U, V), cons_22(W, Z)) -> APPEND_3_IN_GGA3(U, V, U1)
APPEND_3_IN_GGA3(cons_22(U, V), Y, cons_22(U, Z)) -> IF_APPEND_3_IN_1_GGA5(U, V, Y, Z, append_3_in_gga3(V, Y, Z))
APPEND_3_IN_GGA3(cons_22(U, V), Y, cons_22(U, Z)) -> APPEND_3_IN_GGA3(V, Y, Z)
IF_LESSLEAVES_2_IN_1_GG5(U, V, W, Z, append_3_out_gga3(U, V, U1)) -> IF_LESSLEAVES_2_IN_2_GG6(U, V, W, Z, U1, append_3_in_gga3(W, Z, W1))
IF_LESSLEAVES_2_IN_1_GG5(U, V, W, Z, append_3_out_gga3(U, V, U1)) -> APPEND_3_IN_GGA3(W, Z, W1)
IF_LESSLEAVES_2_IN_2_GG6(U, V, W, Z, U1, append_3_out_gga3(W, Z, W1)) -> IF_LESSLEAVES_2_IN_3_GG7(U, V, W, Z, U1, W1, lessleaves_2_in_gg2(U1, W1))
IF_LESSLEAVES_2_IN_2_GG6(U, V, W, Z, U1, append_3_out_gga3(W, Z, W1)) -> LESSLEAVES_2_IN_GG2(U1, W1)
lessleaves_2_in_gg2(nil_0, cons_22(W, Z)) -> lessleaves_2_out_gg2(nil_0, cons_22(W, Z))
lessleaves_2_in_gg2(cons_22(U, V), cons_22(W, Z)) -> if_lessleaves_2_in_1_gg5(U, V, W, Z, append_3_in_gga3(U, V, U1))
append_3_in_gga3(nil_0, Y, Y) -> append_3_out_gga3(nil_0, Y, Y)
append_3_in_gga3(cons_22(U, V), Y, cons_22(U, Z)) -> if_append_3_in_1_gga5(U, V, Y, Z, append_3_in_gga3(V, Y, Z))
if_append_3_in_1_gga5(U, V, Y, Z, append_3_out_gga3(V, Y, Z)) -> append_3_out_gga3(cons_22(U, V), Y, cons_22(U, Z))
if_lessleaves_2_in_1_gg5(U, V, W, Z, append_3_out_gga3(U, V, U1)) -> if_lessleaves_2_in_2_gg6(U, V, W, Z, U1, append_3_in_gga3(W, Z, W1))
if_lessleaves_2_in_2_gg6(U, V, W, Z, U1, append_3_out_gga3(W, Z, W1)) -> if_lessleaves_2_in_3_gg7(U, V, W, Z, U1, W1, lessleaves_2_in_gg2(U1, W1))
if_lessleaves_2_in_3_gg7(U, V, W, Z, U1, W1, lessleaves_2_out_gg2(U1, W1)) -> lessleaves_2_out_gg2(cons_22(U, V), cons_22(W, Z))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APPEND_3_IN_GGA3(cons_22(U, V), Y, cons_22(U, Z)) -> APPEND_3_IN_GGA3(V, Y, Z)
lessleaves_2_in_gg2(nil_0, cons_22(W, Z)) -> lessleaves_2_out_gg2(nil_0, cons_22(W, Z))
lessleaves_2_in_gg2(cons_22(U, V), cons_22(W, Z)) -> if_lessleaves_2_in_1_gg5(U, V, W, Z, append_3_in_gga3(U, V, U1))
append_3_in_gga3(nil_0, Y, Y) -> append_3_out_gga3(nil_0, Y, Y)
append_3_in_gga3(cons_22(U, V), Y, cons_22(U, Z)) -> if_append_3_in_1_gga5(U, V, Y, Z, append_3_in_gga3(V, Y, Z))
if_append_3_in_1_gga5(U, V, Y, Z, append_3_out_gga3(V, Y, Z)) -> append_3_out_gga3(cons_22(U, V), Y, cons_22(U, Z))
if_lessleaves_2_in_1_gg5(U, V, W, Z, append_3_out_gga3(U, V, U1)) -> if_lessleaves_2_in_2_gg6(U, V, W, Z, U1, append_3_in_gga3(W, Z, W1))
if_lessleaves_2_in_2_gg6(U, V, W, Z, U1, append_3_out_gga3(W, Z, W1)) -> if_lessleaves_2_in_3_gg7(U, V, W, Z, U1, W1, lessleaves_2_in_gg2(U1, W1))
if_lessleaves_2_in_3_gg7(U, V, W, Z, U1, W1, lessleaves_2_out_gg2(U1, W1)) -> lessleaves_2_out_gg2(cons_22(U, V), cons_22(W, Z))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APPEND_3_IN_GGA3(cons_22(U, V), Y, cons_22(U, Z)) -> APPEND_3_IN_GGA3(V, Y, Z)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
APPEND_3_IN_GGA2(cons_22(U, V), Y) -> APPEND_3_IN_GGA2(V, Y)
From the DPs we obtained the following set of size-change graphs:
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
LESSLEAVES_2_IN_GG2(cons_22(U, V), cons_22(W, Z)) -> IF_LESSLEAVES_2_IN_1_GG5(U, V, W, Z, append_3_in_gga3(U, V, U1))
IF_LESSLEAVES_2_IN_1_GG5(U, V, W, Z, append_3_out_gga3(U, V, U1)) -> IF_LESSLEAVES_2_IN_2_GG6(U, V, W, Z, U1, append_3_in_gga3(W, Z, W1))
IF_LESSLEAVES_2_IN_2_GG6(U, V, W, Z, U1, append_3_out_gga3(W, Z, W1)) -> LESSLEAVES_2_IN_GG2(U1, W1)
lessleaves_2_in_gg2(nil_0, cons_22(W, Z)) -> lessleaves_2_out_gg2(nil_0, cons_22(W, Z))
lessleaves_2_in_gg2(cons_22(U, V), cons_22(W, Z)) -> if_lessleaves_2_in_1_gg5(U, V, W, Z, append_3_in_gga3(U, V, U1))
append_3_in_gga3(nil_0, Y, Y) -> append_3_out_gga3(nil_0, Y, Y)
append_3_in_gga3(cons_22(U, V), Y, cons_22(U, Z)) -> if_append_3_in_1_gga5(U, V, Y, Z, append_3_in_gga3(V, Y, Z))
if_append_3_in_1_gga5(U, V, Y, Z, append_3_out_gga3(V, Y, Z)) -> append_3_out_gga3(cons_22(U, V), Y, cons_22(U, Z))
if_lessleaves_2_in_1_gg5(U, V, W, Z, append_3_out_gga3(U, V, U1)) -> if_lessleaves_2_in_2_gg6(U, V, W, Z, U1, append_3_in_gga3(W, Z, W1))
if_lessleaves_2_in_2_gg6(U, V, W, Z, U1, append_3_out_gga3(W, Z, W1)) -> if_lessleaves_2_in_3_gg7(U, V, W, Z, U1, W1, lessleaves_2_in_gg2(U1, W1))
if_lessleaves_2_in_3_gg7(U, V, W, Z, U1, W1, lessleaves_2_out_gg2(U1, W1)) -> lessleaves_2_out_gg2(cons_22(U, V), cons_22(W, Z))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
LESSLEAVES_2_IN_GG2(cons_22(U, V), cons_22(W, Z)) -> IF_LESSLEAVES_2_IN_1_GG5(U, V, W, Z, append_3_in_gga3(U, V, U1))
IF_LESSLEAVES_2_IN_1_GG5(U, V, W, Z, append_3_out_gga3(U, V, U1)) -> IF_LESSLEAVES_2_IN_2_GG6(U, V, W, Z, U1, append_3_in_gga3(W, Z, W1))
IF_LESSLEAVES_2_IN_2_GG6(U, V, W, Z, U1, append_3_out_gga3(W, Z, W1)) -> LESSLEAVES_2_IN_GG2(U1, W1)
append_3_in_gga3(nil_0, Y, Y) -> append_3_out_gga3(nil_0, Y, Y)
append_3_in_gga3(cons_22(U, V), Y, cons_22(U, Z)) -> if_append_3_in_1_gga5(U, V, Y, Z, append_3_in_gga3(V, Y, Z))
if_append_3_in_1_gga5(U, V, Y, Z, append_3_out_gga3(V, Y, Z)) -> append_3_out_gga3(cons_22(U, V), Y, cons_22(U, Z))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
LESSLEAVES_2_IN_GG2(cons_22(U, V), cons_22(W, Z)) -> IF_LESSLEAVES_2_IN_1_GG3(W, Z, append_3_in_gga2(U, V))
IF_LESSLEAVES_2_IN_1_GG3(W, Z, append_3_out_gga1(U1)) -> IF_LESSLEAVES_2_IN_2_GG2(U1, append_3_in_gga2(W, Z))
IF_LESSLEAVES_2_IN_2_GG2(U1, append_3_out_gga1(W1)) -> LESSLEAVES_2_IN_GG2(U1, W1)
append_3_in_gga2(nil_0, Y) -> append_3_out_gga1(Y)
append_3_in_gga2(cons_22(U, V), Y) -> if_append_3_in_1_gga2(U, append_3_in_gga2(V, Y))
if_append_3_in_1_gga2(U, append_3_out_gga1(Z)) -> append_3_out_gga1(cons_22(U, Z))
append_3_in_gga2(x0, x1)
if_append_3_in_1_gga2(x0, x1)
IF_LESSLEAVES_2_IN_1_GG3(W, Z, append_3_out_gga1(U1)) -> IF_LESSLEAVES_2_IN_2_GG2(U1, append_3_in_gga2(W, Z))
IF_LESSLEAVES_2_IN_2_GG2(U1, append_3_out_gga1(W1)) -> LESSLEAVES_2_IN_GG2(U1, W1)
append_3_in_gga2(nil_0, Y) -> append_3_out_gga1(Y)
POL(nil_0) = 2
POL(append_3_out_gga1(x1)) = 1 + x1
POL(LESSLEAVES_2_IN_GG2(x1, x2)) = x1 + x2
POL(if_append_3_in_1_gga2(x1, x2)) = x1 + x2
POL(IF_LESSLEAVES_2_IN_2_GG2(x1, x2)) = x1 + x2
POL(IF_LESSLEAVES_2_IN_1_GG3(x1, x2, x3)) = x1 + x2 + x3
POL(append_3_in_gga2(x1, x2)) = x1 + x2
POL(cons_22(x1, x2)) = x1 + x2
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ RuleRemovalProof
LESSLEAVES_2_IN_GG2(cons_22(U, V), cons_22(W, Z)) -> IF_LESSLEAVES_2_IN_1_GG3(W, Z, append_3_in_gga2(U, V))
append_3_in_gga2(cons_22(U, V), Y) -> if_append_3_in_1_gga2(U, append_3_in_gga2(V, Y))
if_append_3_in_1_gga2(U, append_3_out_gga1(Z)) -> append_3_out_gga1(cons_22(U, Z))
append_3_in_gga2(x0, x1)
if_append_3_in_1_gga2(x0, x1)
LESSLEAVES_2_IN_GG2(cons_22(U, V), cons_22(W, Z)) -> IF_LESSLEAVES_2_IN_1_GG3(W, Z, append_3_in_gga2(U, V))
append_3_in_gga2(cons_22(U, V), Y) -> if_append_3_in_1_gga2(U, append_3_in_gga2(V, Y))
POL(append_3_out_gga1(x1)) = x1
POL(LESSLEAVES_2_IN_GG2(x1, x2)) = x1 + x2
POL(if_append_3_in_1_gga2(x1, x2)) = 1 + 2·x1 + x2
POL(IF_LESSLEAVES_2_IN_1_GG3(x1, x2, x3)) = x1 + x2 + x3
POL(append_3_in_gga2(x1, x2)) = 1 + 2·x1 + x2
POL(cons_22(x1, x2)) = 1 + 2·x1 + x2
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ PisEmptyProof
if_append_3_in_1_gga2(U, append_3_out_gga1(Z)) -> append_3_out_gga1(cons_22(U, Z))
append_3_in_gga2(x0, x1)
if_append_3_in_1_gga2(x0, x1)