↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
rotate2: (b,f)
append3: (f,f,b) (b,b,f)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
rotate_2_in_ga2(X, Y) -> if_rotate_2_in_1_ga3(X, Y, append_3_in_aag3(A, B, X))
append_3_in_aag3(._22(X, Xs), Ys, ._22(X, Zs)) -> if_append_3_in_1_aag5(X, Xs, Ys, Zs, append_3_in_aag3(Xs, Ys, Zs))
append_3_in_aag3([]_0, Ys, Ys) -> append_3_out_aag3([]_0, Ys, Ys)
if_append_3_in_1_aag5(X, Xs, Ys, Zs, append_3_out_aag3(Xs, Ys, Zs)) -> append_3_out_aag3(._22(X, Xs), Ys, ._22(X, Zs))
if_rotate_2_in_1_ga3(X, Y, append_3_out_aag3(A, B, X)) -> if_rotate_2_in_2_ga5(X, Y, A, B, append_3_in_gga3(B, A, Y))
append_3_in_gga3(._22(X, Xs), Ys, ._22(X, Zs)) -> if_append_3_in_1_gga5(X, Xs, Ys, Zs, append_3_in_gga3(Xs, Ys, Zs))
append_3_in_gga3([]_0, Ys, Ys) -> append_3_out_gga3([]_0, Ys, Ys)
if_append_3_in_1_gga5(X, Xs, Ys, Zs, append_3_out_gga3(Xs, Ys, Zs)) -> append_3_out_gga3(._22(X, Xs), Ys, ._22(X, Zs))
if_rotate_2_in_2_ga5(X, Y, A, B, append_3_out_gga3(B, A, Y)) -> rotate_2_out_ga2(X, Y)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
rotate_2_in_ga2(X, Y) -> if_rotate_2_in_1_ga3(X, Y, append_3_in_aag3(A, B, X))
append_3_in_aag3(._22(X, Xs), Ys, ._22(X, Zs)) -> if_append_3_in_1_aag5(X, Xs, Ys, Zs, append_3_in_aag3(Xs, Ys, Zs))
append_3_in_aag3([]_0, Ys, Ys) -> append_3_out_aag3([]_0, Ys, Ys)
if_append_3_in_1_aag5(X, Xs, Ys, Zs, append_3_out_aag3(Xs, Ys, Zs)) -> append_3_out_aag3(._22(X, Xs), Ys, ._22(X, Zs))
if_rotate_2_in_1_ga3(X, Y, append_3_out_aag3(A, B, X)) -> if_rotate_2_in_2_ga5(X, Y, A, B, append_3_in_gga3(B, A, Y))
append_3_in_gga3(._22(X, Xs), Ys, ._22(X, Zs)) -> if_append_3_in_1_gga5(X, Xs, Ys, Zs, append_3_in_gga3(Xs, Ys, Zs))
append_3_in_gga3([]_0, Ys, Ys) -> append_3_out_gga3([]_0, Ys, Ys)
if_append_3_in_1_gga5(X, Xs, Ys, Zs, append_3_out_gga3(Xs, Ys, Zs)) -> append_3_out_gga3(._22(X, Xs), Ys, ._22(X, Zs))
if_rotate_2_in_2_ga5(X, Y, A, B, append_3_out_gga3(B, A, Y)) -> rotate_2_out_ga2(X, Y)
ROTATE_2_IN_GA2(X, Y) -> IF_ROTATE_2_IN_1_GA3(X, Y, append_3_in_aag3(A, B, X))
ROTATE_2_IN_GA2(X, Y) -> APPEND_3_IN_AAG3(A, B, X)
APPEND_3_IN_AAG3(._22(X, Xs), Ys, ._22(X, Zs)) -> IF_APPEND_3_IN_1_AAG5(X, Xs, Ys, Zs, append_3_in_aag3(Xs, Ys, Zs))
APPEND_3_IN_AAG3(._22(X, Xs), Ys, ._22(X, Zs)) -> APPEND_3_IN_AAG3(Xs, Ys, Zs)
IF_ROTATE_2_IN_1_GA3(X, Y, append_3_out_aag3(A, B, X)) -> IF_ROTATE_2_IN_2_GA5(X, Y, A, B, append_3_in_gga3(B, A, Y))
IF_ROTATE_2_IN_1_GA3(X, Y, append_3_out_aag3(A, B, X)) -> APPEND_3_IN_GGA3(B, A, Y)
APPEND_3_IN_GGA3(._22(X, Xs), Ys, ._22(X, Zs)) -> IF_APPEND_3_IN_1_GGA5(X, Xs, Ys, Zs, append_3_in_gga3(Xs, Ys, Zs))
APPEND_3_IN_GGA3(._22(X, Xs), Ys, ._22(X, Zs)) -> APPEND_3_IN_GGA3(Xs, Ys, Zs)
rotate_2_in_ga2(X, Y) -> if_rotate_2_in_1_ga3(X, Y, append_3_in_aag3(A, B, X))
append_3_in_aag3(._22(X, Xs), Ys, ._22(X, Zs)) -> if_append_3_in_1_aag5(X, Xs, Ys, Zs, append_3_in_aag3(Xs, Ys, Zs))
append_3_in_aag3([]_0, Ys, Ys) -> append_3_out_aag3([]_0, Ys, Ys)
if_append_3_in_1_aag5(X, Xs, Ys, Zs, append_3_out_aag3(Xs, Ys, Zs)) -> append_3_out_aag3(._22(X, Xs), Ys, ._22(X, Zs))
if_rotate_2_in_1_ga3(X, Y, append_3_out_aag3(A, B, X)) -> if_rotate_2_in_2_ga5(X, Y, A, B, append_3_in_gga3(B, A, Y))
append_3_in_gga3(._22(X, Xs), Ys, ._22(X, Zs)) -> if_append_3_in_1_gga5(X, Xs, Ys, Zs, append_3_in_gga3(Xs, Ys, Zs))
append_3_in_gga3([]_0, Ys, Ys) -> append_3_out_gga3([]_0, Ys, Ys)
if_append_3_in_1_gga5(X, Xs, Ys, Zs, append_3_out_gga3(Xs, Ys, Zs)) -> append_3_out_gga3(._22(X, Xs), Ys, ._22(X, Zs))
if_rotate_2_in_2_ga5(X, Y, A, B, append_3_out_gga3(B, A, Y)) -> rotate_2_out_ga2(X, Y)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
ROTATE_2_IN_GA2(X, Y) -> IF_ROTATE_2_IN_1_GA3(X, Y, append_3_in_aag3(A, B, X))
ROTATE_2_IN_GA2(X, Y) -> APPEND_3_IN_AAG3(A, B, X)
APPEND_3_IN_AAG3(._22(X, Xs), Ys, ._22(X, Zs)) -> IF_APPEND_3_IN_1_AAG5(X, Xs, Ys, Zs, append_3_in_aag3(Xs, Ys, Zs))
APPEND_3_IN_AAG3(._22(X, Xs), Ys, ._22(X, Zs)) -> APPEND_3_IN_AAG3(Xs, Ys, Zs)
IF_ROTATE_2_IN_1_GA3(X, Y, append_3_out_aag3(A, B, X)) -> IF_ROTATE_2_IN_2_GA5(X, Y, A, B, append_3_in_gga3(B, A, Y))
IF_ROTATE_2_IN_1_GA3(X, Y, append_3_out_aag3(A, B, X)) -> APPEND_3_IN_GGA3(B, A, Y)
APPEND_3_IN_GGA3(._22(X, Xs), Ys, ._22(X, Zs)) -> IF_APPEND_3_IN_1_GGA5(X, Xs, Ys, Zs, append_3_in_gga3(Xs, Ys, Zs))
APPEND_3_IN_GGA3(._22(X, Xs), Ys, ._22(X, Zs)) -> APPEND_3_IN_GGA3(Xs, Ys, Zs)
rotate_2_in_ga2(X, Y) -> if_rotate_2_in_1_ga3(X, Y, append_3_in_aag3(A, B, X))
append_3_in_aag3(._22(X, Xs), Ys, ._22(X, Zs)) -> if_append_3_in_1_aag5(X, Xs, Ys, Zs, append_3_in_aag3(Xs, Ys, Zs))
append_3_in_aag3([]_0, Ys, Ys) -> append_3_out_aag3([]_0, Ys, Ys)
if_append_3_in_1_aag5(X, Xs, Ys, Zs, append_3_out_aag3(Xs, Ys, Zs)) -> append_3_out_aag3(._22(X, Xs), Ys, ._22(X, Zs))
if_rotate_2_in_1_ga3(X, Y, append_3_out_aag3(A, B, X)) -> if_rotate_2_in_2_ga5(X, Y, A, B, append_3_in_gga3(B, A, Y))
append_3_in_gga3(._22(X, Xs), Ys, ._22(X, Zs)) -> if_append_3_in_1_gga5(X, Xs, Ys, Zs, append_3_in_gga3(Xs, Ys, Zs))
append_3_in_gga3([]_0, Ys, Ys) -> append_3_out_gga3([]_0, Ys, Ys)
if_append_3_in_1_gga5(X, Xs, Ys, Zs, append_3_out_gga3(Xs, Ys, Zs)) -> append_3_out_gga3(._22(X, Xs), Ys, ._22(X, Zs))
if_rotate_2_in_2_ga5(X, Y, A, B, append_3_out_gga3(B, A, Y)) -> rotate_2_out_ga2(X, Y)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APPEND_3_IN_GGA3(._22(X, Xs), Ys, ._22(X, Zs)) -> APPEND_3_IN_GGA3(Xs, Ys, Zs)
rotate_2_in_ga2(X, Y) -> if_rotate_2_in_1_ga3(X, Y, append_3_in_aag3(A, B, X))
append_3_in_aag3(._22(X, Xs), Ys, ._22(X, Zs)) -> if_append_3_in_1_aag5(X, Xs, Ys, Zs, append_3_in_aag3(Xs, Ys, Zs))
append_3_in_aag3([]_0, Ys, Ys) -> append_3_out_aag3([]_0, Ys, Ys)
if_append_3_in_1_aag5(X, Xs, Ys, Zs, append_3_out_aag3(Xs, Ys, Zs)) -> append_3_out_aag3(._22(X, Xs), Ys, ._22(X, Zs))
if_rotate_2_in_1_ga3(X, Y, append_3_out_aag3(A, B, X)) -> if_rotate_2_in_2_ga5(X, Y, A, B, append_3_in_gga3(B, A, Y))
append_3_in_gga3(._22(X, Xs), Ys, ._22(X, Zs)) -> if_append_3_in_1_gga5(X, Xs, Ys, Zs, append_3_in_gga3(Xs, Ys, Zs))
append_3_in_gga3([]_0, Ys, Ys) -> append_3_out_gga3([]_0, Ys, Ys)
if_append_3_in_1_gga5(X, Xs, Ys, Zs, append_3_out_gga3(Xs, Ys, Zs)) -> append_3_out_gga3(._22(X, Xs), Ys, ._22(X, Zs))
if_rotate_2_in_2_ga5(X, Y, A, B, append_3_out_gga3(B, A, Y)) -> rotate_2_out_ga2(X, Y)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APPEND_3_IN_GGA3(._22(X, Xs), Ys, ._22(X, Zs)) -> APPEND_3_IN_GGA3(Xs, Ys, Zs)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
APPEND_3_IN_GGA2(._22(X, Xs), Ys) -> APPEND_3_IN_GGA2(Xs, Ys)
From the DPs we obtained the following set of size-change graphs:
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
APPEND_3_IN_AAG3(._22(X, Xs), Ys, ._22(X, Zs)) -> APPEND_3_IN_AAG3(Xs, Ys, Zs)
rotate_2_in_ga2(X, Y) -> if_rotate_2_in_1_ga3(X, Y, append_3_in_aag3(A, B, X))
append_3_in_aag3(._22(X, Xs), Ys, ._22(X, Zs)) -> if_append_3_in_1_aag5(X, Xs, Ys, Zs, append_3_in_aag3(Xs, Ys, Zs))
append_3_in_aag3([]_0, Ys, Ys) -> append_3_out_aag3([]_0, Ys, Ys)
if_append_3_in_1_aag5(X, Xs, Ys, Zs, append_3_out_aag3(Xs, Ys, Zs)) -> append_3_out_aag3(._22(X, Xs), Ys, ._22(X, Zs))
if_rotate_2_in_1_ga3(X, Y, append_3_out_aag3(A, B, X)) -> if_rotate_2_in_2_ga5(X, Y, A, B, append_3_in_gga3(B, A, Y))
append_3_in_gga3(._22(X, Xs), Ys, ._22(X, Zs)) -> if_append_3_in_1_gga5(X, Xs, Ys, Zs, append_3_in_gga3(Xs, Ys, Zs))
append_3_in_gga3([]_0, Ys, Ys) -> append_3_out_gga3([]_0, Ys, Ys)
if_append_3_in_1_gga5(X, Xs, Ys, Zs, append_3_out_gga3(Xs, Ys, Zs)) -> append_3_out_gga3(._22(X, Xs), Ys, ._22(X, Zs))
if_rotate_2_in_2_ga5(X, Y, A, B, append_3_out_gga3(B, A, Y)) -> rotate_2_out_ga2(X, Y)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
APPEND_3_IN_AAG3(._22(X, Xs), Ys, ._22(X, Zs)) -> APPEND_3_IN_AAG3(Xs, Ys, Zs)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
APPEND_3_IN_AAG1(._22(X, Zs)) -> APPEND_3_IN_AAG1(Zs)
From the DPs we obtained the following set of size-change graphs: